1
Septembers 2015 年 5 月 8 日
这图,这不算技巧把,这个逻辑优化在任何语言上都适用
|
2
greatyao 2015 年 5 月 8 日 via Android
good
|
3
yukirock 2015 年 5 月 8 日
|
4
laotaitai 2015 年 5 月 8 日
我觉得第一个易读.
|
5
mimzy 2015 年 5 月 8 日
感谢分享。写 C# 的时候 Resharper 有一个自选的功能叫 Invert "if" statement to reduce nesting,和楼主说的应该是同样的道理。
|
6
donghouhe 2015 年 5 月 9 日 via Android
@yukirock 大哥你二了,用and不是&&吧
我也来个 ``` if all( is_for_sale(item), compute_cost(item) > wallet.money ): buy(item) ``` |
7
chevalier 2015 年 5 月 9 日
<代码大全>里面专门有教这个,把多个嵌套的循环/判断改写的可读性好
|
8
zhengkai 2015 年 5 月 9 日 是的,真有心想以编程为职业的话,还是去看下《代码大全》吧,这本书不会让你得到什么深奥的计算机知识,都是些基本常识,我觉得具备常识和不具备常识的人之间沟通是有障碍的。明明是花一个月时间就能整本书几百页看完都掌握的了知识,却要隔三差五去把其中的零碎的只言片语当成什么花哨技巧,从而一辈子都没法去学完
《代码大全》讲了减少缩进有很多种方法,还比方说,没有循环的情况下,如果 if 层数太多,可以加个 do { ... } while (false) ,然后每个 if 里都是 break |
9
powergx 2015 年 5 月 9 日
代码短,好看 != 性能好
把自己当成解释器跑人脑跑一边就知道了 |
10
geeklian 2015 年 5 月 9 日 via iPhone
为了代码的可读性,可维护性,应该优先选择接近业务逻辑和自然语言的,而不是代码好看。
|
11
ryd994 2015 年 5 月 9 日
其实性能上是一样的
层数多又不影响大O |
12
puncsky 2015 年 5 月 9 日
Code Complete +1
|
13
billgreen1 2015 年 5 月 9 日
不应该用列表推导式吗?
[by(item) for item in items if is_for_sale(item) and compute_cost(item)<= wallet.money] |
14
erik0 2015 年 5 月 9 日
教你学用continue
|
18
Gandum 2015 年 5 月 9 日 via iPhone
一猜就是continue
|
19
handleyan 2015 年 5 月 9 日 via iPhone
楼主好不容易在编程的世界里迈出了可贵的一步,你们就不能给点掌声吗?谁当年不是这么一步一步过来的,楼主加油!
|
20
ctexlive 2015 年 5 月 9 日 via Android
这个代码唯一好处就是改进了缩进样式。
|
21
fatestigma 2015 年 5 月 9 日 via iPad
这个好像是叫德摩根定律。。
|
22
shierji 2015 年 5 月 9 日 via Android
感觉很有用 谢谢
|
23
x88484532 2015 年 5 月 10 日
前段代码只是加深了判断层次,并没有加深循环层次
|
24
hhstore 2015 年 5 月 13 日
用continue除了让代码变得不直观,增加debug的麻烦.看不出有啥意义.
写可维护性高,易读,易debug,不易出错的代码,比炫技更重要. 代码少,你用continue还可控. 代码量大了,过段时间,估计你自己都不确信自己当初是否是想表达这样的逻辑. 个人不喜欢版本2的写法,团队里,谁滥用这种写法,估计是神烦的. 不过倒是引起一个好奇,有必要检索一下常见的框架源码(Django,Flask)中有多少continue关键词. 看看正经的项目,有多少滥用continue的. |
25
hhstore 2015 年 5 月 13 日
我简单的在pycharm中检索了我的开发环境/Library/Python/2.7/site-packages目录下出现continue的包:
统计如下: ======================================= 项目 / 源码 / 单元测试 django /220次(口算求和,不一定准确) 10次 flask /2次 tornado /40次 /10次 bottle /9次 requests /16次 jinja2 /24次 httplib2 /6次 bs4 /7次 scrapy /13次 sqlalchemy /101次 /5次 ======================================= 简单挑了几个,可以看出来.大多数的项目,使用continue的关键字都是极少. 我检索了我所有的开发包,总共出现942次continue. 安装的很多包,都是0次~ ======================================= 感兴趣的小伙伴,自行看看自己的pycharm,做这个统计,还是很轻松的. |