这样子写代码有什么好处?

157 天前
 FkingMan

ansible 的源代码(lib/ansible/config/manager.py) 第 283 行,我好奇这样写有啥好处?是为了更强的表达能力吗? 少写代码为了更强的表达能力?

def _add_base_defs_deprecations(base_defs):
    '''Add deprecation source 'ansible.builtin' to deprecations in base.yml'''
    def process(entry):
        if 'deprecated' in entry:
            entry['deprecated']['collection_name'] = 'ansible.builtin'

    for dummy, data in base_defs.items():
        process(data)
        for section in ('ini', 'env', 'vars'):
            if section in data:
                for entry in data[section]:
                    process(entry)
                    
3818 次点击
所在节点    程序员
10 条回复
passive
157 天前
自己搓个 map 和 lambda
FelineTerrorist
157 天前
我不理解你说的 ``这样子'' 是怎样子,在我看来就是正常的代码。
建议的提问方式:
1. 你觉得应该是怎样子
2. 实际上和你所觉得的区别在哪里
3. 为什么你觉得你所觉得的样子更好
chendy
156 天前
没看懂问题…
看不懂代码这类问题,建议直接把问题塞进代码注释
不明白‘为什么这么写’的地方,最好带上‘我觉得可以这么写’
Edward4074
156 天前
我猜问的是为什么要定义 process 这个函数[狗头]
gongym
156 天前
看起来好处就是提取了重复逻辑,避免了重复代码。
和表达能力好像不挨着呢
zdw189803631
156 天前
哪样子?
kkk9
156 天前
如果你是疑惑 process(entry) 那是挺正常的,保持 for 结构整洁,以后有修改也不用重新看 for 的逻辑,久了肯定忘记其中的细节,不如一开始就抽出来
csys
156 天前
我猜楼主指的是 def process(entry): ,可以看下 martin fowler 的《重构》
FkingMan
156 天前
@Edward4074 是的是的
cccjk
156 天前
为什么把 process 函数抽出来?这样是为了更方便吧,你贴出来的代码下面只有两处通了 process 。如果是多处呢?后面如果需要改变下逻辑呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1057253

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX