如何强迫自己更优雅地编码?

2024-04-26 14:09:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到,与其他人相比,我的编码风格往往非常暴力。例如,一个实践问题要求我们通过一个类创建一个密码。密码将接受一个字符串,并使用两个字母序列对字符串进行编码和解码。例如:

map1 = "abcdefghijklmnopqrstuvwxyz"
map2 = "etaoinshrdlucmfwypvbgkjqxz"

cipher = Cipher(map1, map2);
cipher.encode("abc") => "eta"

我通过写下以下内容成功地完成了这道练习题:

class Cipher(object):
    def __init__(self, map1, map2):
        self.map1=map1
        self.map2=map2

    def encode(self, string):
        string=list(string)
        string_pos=[self.map1.index(i) if i.isalpha() else i for i in string]
        string_enc=[self.map2[i] if isinstance(i, int) else i for i in string_pos]
        return ''.join(string_enc)

    def decode(self, string):
        string=list(string)
        string_pos=[self.map2.index(i) if i.isalpha() else i for i in string]
        string_dec=[self.map1[i] if isinstance(i, int) else i for i in string_pos]
        return ''.join(string_dec)

然而,其他人以我认为更直接的方式完成了同样的练习题:

from string import maketrans

class Cipher(object):
    def __init__(self, map1, map2):
        self.encode_table = maketrans(map1, map2)
        self.decode_table = maketrans(map2, map1)
    def encode(self, string):
        return string.translate(self.encode_table)
    def decode(self, string):
        return string.translate(self.decode_table)

我怎样才能强迫/教会自己开始编写更优雅、更直截了当的代码,并逐渐远离暴力式的代码?你会推荐什么阅读资源?你知道有什么窍门可以帮助你,比如“如果你看到你自己在使用x,记住y做同样的事情更优雅?”你知道吗

任何帮助都将不胜感激。你知道吗


Tags: inposselfforstringreturnifdef
1条回答
网友
1楼 · 发布于 2024-04-26 14:09:20

我认为你的问题的答案是:“实践创造大师”。编写代码,检查代码,重构代码。随着时间的推移,您将获得越来越多的经验和编写更好的代码。作为参考资料,我建议您阅读robertc.Martin的“干净代码”,andyhund和davethomas的“实用程序员”,sandimetz的“实用面向对象设计”。我想你会得到一个更好的开发人员,如果你读他们。你知道吗

相关问题 更多 >