V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mingran
V2EX  ›  分享发现

交流一下,代码可读性+1s 的方法。

  •  
  •   mingran · 2017-09-19 13:36:43 +08:00 · 1784 次点击
    这是一个创建于 2626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我不知道如何描述这个事情,

    但我知道,在写 C++的时候,如果这样写,可读性会强很多,而且可以杀掉很多临时变量:

    longFunction() {
      ......
      { // task #1. 做了一点微不足道的工作
        tempvars;
        operations();
      }  
      ......
      { // task #i. 想看懂哥的代码,你必须知道的人生经验
        tempvars;
        operations();
      }  
    }
    

    我想交流的内容是,写 python 该如何实现这种情况 这样写最直观,但感觉太蠢。。。

    def longFunction:
      ......
      if '做了一点微不足道的工作':
        tempvars
        operations()
      ......
    

    与之类似,用 with 的方法,可以实现类似效果, 优势是能增加可读性,但缺点是白白搞出一个对象,还有 4 个函数的开销。

    def longFunction():
      ......
      with SomeTips('做了一点微不足道的工作')
        tempvars
        operations()
      ......
      
    

    当然 SomeTips 类是要自己写的

    class SomeTips:
      def __init__(self, arg):
        return
      def __enter__(self):
        return
      def __exit__(self, et, ev, eb):
        return
    

    我想问问,你们写各自语言都是怎么写的?

    另外,python 有更好的方案么?或者什么内建类能代替 SomeTips ?

    7 条回复    2017-10-07 15:12:02 +08:00
    whileFalse
        1
    whileFalse  
       2017-09-19 16:19:02 +08:00
    过度优化乃万恶之源

    哦 是过早优化
    python 不需要这么优化。不然何必用 python
    am241
        2
    am241  
       2017-09-19 16:34:29 +08:00 via Android
    为什么不拆成多个函数
    msg7086
        3
    msg7086  
       2017-09-20 00:37:06 +08:00   ❤️ 1
    这贴太暴力了,还是考虑拆函数吧。
    mingran
        4
    mingran  
    OP
       2017-09-20 09:46:38 +08:00
    @am241
    @msg7086

    拆函数是一种情况,

    1. 随便啥功能都来个函数跳转,可读性的感觉不见得好,

    2. 有些 10 句以内的处理,基本不会在别处直接使用。

    用 python 的内嵌函数,其实也是不错的选择,比如
    ```
    def longFunction():
    .....
    some_data
    def process(args): # '一点微不足道的工作'
    proc(args)
    process(some_data)
    .....
    ```
    msg7086
        5
    msg7086  
       2017-09-20 10:08:30 +08:00
    我们 Ruby 没有内嵌函数,都是平级的,不过一般推荐一个函数不要超过 10 行。我们自己一般限定在 30 行左右,再长的话都会考虑拆分,能移进对象的都移进对象里去。
    jedihy
        6
    jedihy  
       2017-10-02 14:10:57 +08:00 via iPhone
    C++那种写法没觉得可读性增加了啊
    mingran
        7
    mingran  
    OP
       2017-10-07 15:12:02 +08:00
    @jedihy 你写 C++时的,注释的风格分几种?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2222 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:12 · PVG 00:12 · LAX 08:12 · JFK 11:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.