为什么我要在Python中将所有字符串转换为常量?
我不知道这对社区是否有用,因为这可能是我的情况所独有的。我和一位高级程序员一起工作,他在代码中有一个特殊的习惯,即在使用字符串之前将所有字符串转换为常量。我就是不明白为什么。这对我来说毫无意义。99%的时间里,我们没有从转换中获得抽象或表达能力,就像这样:为什么我要在Python中将所有字符串转换为常量?,python,constants,Python,Constants,我不知道这对社区是否有用,因为这可能是我的情况所独有的。我和一位高级程序员一起工作,他在代码中有一个特殊的习惯,即在使用字符串之前将所有字符串转换为常量。我就是不明白为什么。这对我来说毫无意义。99%的时间里,我们没有从转换中获得抽象或表达能力,就像这样: URL_CONVERTER = "url_converter" URL_TYPE_LONG = "url_type_long" URL_TYPE_SHORT = "url_type_short" URL_TYPE_ARRAY = [URL_T
URL_CONVERTER = "url_converter"
URL_TYPE_LONG = "url_type_long"
URL_TYPE_SHORT = "url_type_short"
URL_TYPE_ARRAY = [URL_TYPE_LONG, URL_TYPE_SHORT]
for urltype in URL_TYPE_ARRAY:
outside_class.validate(urltype)
就这样。通常,常量名称几乎总是字符串的内容,大写,而且这些常量很少被多次引用。这样创建的常量中,在运行时被引用两次或两次以上的可能不到5%
这是我不懂的编程技巧吗?或者这只是一个坏习惯?其他程序员开始模仿这种(可能很糟糕)形式,我想知道在盲目跟随之前,我是否也有这样做的理由
谢谢
编辑:更新了示例。此外,我理解每个人的观点,并补充说,这是一个相当小的商店,最多有两个人会看到任何人的代码,更不用说编写代码了,这些都是我们正在构建的非常简单的一次性代码,而不是复杂的工人或任何东西。我理解为什么在大型项目中这是一个很好的实践,但是在我们的工作环境中,对于一个非常简单的任务来说,这会带来太多的开销。这有助于保持代码的一致性。例如,如果在客户端和服务器中都使用URL_TYPE_LONG,并且出于某种原因需要更改其字符串值,则只需更改一行即可。您不会忘记更改代码中的一个实例,或者更改代码中具有相同值的字符串 即使这些常数现在只被引用一次,我们又是谁来预测未来呢
我认为这也源于一段时间(恐龙在地球上漫游)你试图(a)保持数据和代码的分离,(B)你担心你分配了多少字符串。下面是一些场景,这将是一个很好的实践:
基本上,答案是要聪明。扪心自问:将字符串转换成变量可以节省打字时间吗?它会提高效率吗?它会使您的代码更易于使用和/或维护吗?如果您对其中任何一项回答“是”,那么您应该这样做。这样做确实是个好主意。。我与100多名其他工程师一起在一个相当大的python代码库上工作,并证明这使协作更加容易 如果您在任何地方都直接使用底层字符串,那么在一个特定模块中引用它时,您将更容易输入错误,并且可能导致难以捕获的错误
当您使用这样的变量时,现代IDE更容易提供自动完成和重构支持。您可以在以后轻松地将基础标识符更改为不同的字符串甚至数字;这使您更容易跟踪引用特定标识符的所有模块。在上下文中提供一个示例。换句话说,向我们展示其中一个字符串,并向我们展示它在一段代码中的使用情况。很乐意,但无法共享我们的代码。我将用一个合理的答案更新这个例子-我认为我的答案仍然适用于你更新的问题。在您给出的示例代码中,您不在我列出的四个场景中的任何一个(或任何其他类似场景)。因此,这不是对代码的明智使用。所以,在这个具体的例子中,我会说不,你不应该这样做。这里不需要这些行/变量。再说一次,你需要聪明一点。做最有效/最有优势的事。