python – 将长变量重新分配为本地缩写是不好的风格?

python – 将长变量重新分配为本地缩写是不好的风格?,第1张

概述我更喜欢使用长标识符来保持我的代码在语义上清晰,但是在重复引用相同标识符的情况下,我希望它在当前范围内“摆脱困境”.以 Python为例: def define_many_mappings_1(self): self.define_bidirectional_parameter_mapping("status", "current_status") self.define_bidi 我更喜欢使用长标识符来保持我的代码在语义上清晰,但是在重复引用相同标识符的情况下,我希望它在当前范围内“摆脱困境”.以 Python为例:

def define_many_mapPings_1(self):    self.define_bIDirectional_parameter_mapPing("status","current_status")    self.define_bIDirectional_parameter_mapPing("ID","unique_ID")    self.define_bIDirectional_parameter_mapPing("location","coordinates")    #etc...

让我们假设我真的想坚持使用这个长方法名称,并且这些参数总是会被硬编码.
实现1感觉不对,因为每行的大部分都被重复的字符占用.这些行通常也很长,并且当嵌套在类定义和/或try / except块中时容易超过80个字符,从而导致难看的换行.让我们尝试使用for循环:

def define_many_mapPings_2(self):    mapPings = [("status","current_status"),("ID","unique_ID"),("location","coordinates")]    for mapPing in mapPings:        self.define_parameter_mapPing(*mapPing)

我将在实现2的保护下将所有类似的迭代技术混为一谈,该技术改进了将“唯一”参数与“重复”方法名称分开.但是,我不喜欢这样做会将参数放在它们传入的方法之前,这是令人困惑的.我宁愿保留“动词后跟直接对象”语法.

我发现自己使用以下方法作为妥协:

def define_many_mapPings_3(self):    d = self.define_bIDirectional_parameter_mapPing    d("status","current_status")    d("ID","unique_ID")    d("location","coordinates")

在实现3中,long方法由极短的“缩写变量别名.我喜欢这种方法,因为它可以立即识别为一组重复的方法调用,同时具有较少的冗余字符和更短的行.缺点是使用极短且语义不清楚的标识符“d”.

什么是最易读的解决方案?如果从本地范围内的未缩写版本明确分配,则“缩写变量”的使用是否可以接受?

解决方法 我会选择实施2,但这是一个很接近的电话.

我认为#2和#3同样可读.想象一下,如果你有100多个映射……无论哪种方式,我都无法分辨底部的代码是什么而不滚动到顶部.在#2中,您将为数据命名;在#3中,您将为该函数命名.它基本上是洗.

更改数据也很简单,因为无论哪种方式,您只需添加一条与已有模式相同的模式.

如果您想要更改您对数据所做的 *** 作,则会出现差异.例如,假设您决定为您定义的每个映射添加调试消息.使用#2,您可以向循环添加语句,并且仍然可以轻松阅读.使用#3,你必须创建一个lambda或其他东西. lambdas没有错 – 我和任何人一样喜欢lisp – 但我认为我仍然会发现#2更容易阅读和修改.

但这是一个很接近的电话,你的口味可能会有所不同.

总结

以上是内存溢出为你收集整理的python – 将长变量重新分配为本地缩写是不好的风格?全部内容,希望文章能够帮你解决python – 将长变量重新分配为本地缩写是不好的风格?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存