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

时间:2018-05-27 17:52:12

标签: python python-3.x coding-efficiency

我注意到,与其他人相比,我的编码风格往往非常暴力。例如,练习题需要我们通过类创建一个密码。密码将接受一个字符串并使用两个字母表系列来编码和解码字符串。例如:

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更优雅地做同样的事情吗?”

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为你的问题的答案是:"实践创造了大师"。编写代码,检查代码,重构代码。随着时间的推移,您将获得越来越多的经验并编写更好的代码。作为资源,我建议阅读"清洁代码"作者:Robert C. Martin,"实用程序员"作者:Andy Hund和Dave Thomas,"实用的面向对象设计"作者:Sandi Metz。如果您阅读它们,我认为您将获得更好的开发人员。