V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FkingMan
V2EX  ›  程序员

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

  •  
  •   FkingMan · 163 天前 · 3827 次点击
    这是一个创建于 163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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)
                        
    
    第 1 条附言  ·  162 天前
    看了大家留言,我重新描述下我的问题,我不理解为什么还要定义一个内部函数?我觉得完全可以一个函数可以搞定
    10 条回复    2024-07-15 16:13:13 +08:00
    passive
        1
    passive  
       163 天前
    自己搓个 map 和 lambda
    FelineTerrorist
        2
    FelineTerrorist  
       163 天前   ❤️ 13
    我不理解你说的 ``这样子'' 是怎样子,在我看来就是正常的代码。
    建议的提问方式:
    1. 你觉得应该是怎样子
    2. 实际上和你所觉得的区别在哪里
    3. 为什么你觉得你所觉得的样子更好
    chendy
        3
    chendy  
       163 天前
    没看懂问题…
    看不懂代码这类问题,建议直接把问题塞进代码注释
    不明白‘为什么这么写’的地方,最好带上‘我觉得可以这么写’
    Edward4074
        4
    Edward4074  
       163 天前   ❤️ 1
    我猜问的是为什么要定义 process 这个函数[狗头]
    gongym
        5
    gongym  
       163 天前
    看起来好处就是提取了重复逻辑,避免了重复代码。
    和表达能力好像不挨着呢
    zdw189803631
        6
    zdw189803631  
       163 天前
    哪样子?
    kkk9
        7
    kkk9  
       163 天前   ❤️ 1
    如果你是疑惑 process(entry) 那是挺正常的,保持 for 结构整洁,以后有修改也不用重新看 for 的逻辑,久了肯定忘记其中的细节,不如一开始就抽出来
    csys
        8
    csys  
       163 天前
    我猜楼主指的是 def process(entry): ,可以看下 martin fowler 的《重构》
    FkingMan
        9
    FkingMan  
    OP
       162 天前
    @Edward4074 是的是的
    cccjk
        10
    cccjk  
       162 天前   ❤️ 1
    为什么把 process 函数抽出来?这样是为了更方便吧,你贴出来的代码下面只有两处通了 process 。如果是多处呢?后面如果需要改变下逻辑呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3490 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.