• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FkingMan
V2EX  ›  程序员

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

  •  
  •   FkingMan · Jul 14, 2024 · 5522 views
    This topic created in 845 days ago, the information mentioned may be changed or developed.

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