V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FkingMan
V2EX  ›  程序员

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

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