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

2017-09-19 13:36:43 +08:00
 mingran

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

但我知道,在写 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 ?

1723 次点击
所在节点    分享发现
7 条回复
whileFalse
2017-09-19 16:19:02 +08:00
过度优化乃万恶之源

哦 是过早优化
python 不需要这么优化。不然何必用 python
am241
2017-09-19 16:34:29 +08:00
为什么不拆成多个函数
msg7086
2017-09-20 00:37:06 +08:00
这贴太暴力了,还是考虑拆函数吧。
mingran
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
2017-09-20 10:08:30 +08:00
我们 Ruby 没有内嵌函数,都是平级的,不过一般推荐一个函数不要超过 10 行。我们自己一般限定在 30 行左右,再长的话都会考虑拆分,能移进对象的都移进对象里去。
jedihy
2017-10-02 14:10:57 +08:00
C++那种写法没觉得可读性增加了啊
mingran
2017-10-07 15:12:02 +08:00
@jedihy 你写 C++时的,注释的风格分几种?

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

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

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

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

© 2021 V2EX