with xx 里的with不美观,而且逻辑上并并不是恰到好处,借用了另一个语法拿过来凑合用的,这点你也认同的。
那接下来讨论的是do end是否多余的问题。
我们写程序的时候,进入一个逻辑块和退出一个逻辑块都是有意识地操作。ruby的进块和出块用do..end,都是是explicit地表达了程序员的思维。而python进块的时候用explicit的冒号,出块的时候是implicit地用个退格。且不说这样设计有什么不便,这连python自己的zen也不怎么符合。。
我认为do..end,或者begin..end,是很优雅地操作。虽然多打几个字,但是对控制节奏有帮助。写起代码来打字和思维是同步的。易读,易写,易parse。而且不依赖缩进,可以把多行代码压成一行。
我来反证do..end不多余:如果do..end是多余的,那python的冒号也是多余的。不写冒号完全不影响逻辑。进而,任何缩进换行都是多余的,浪费字节数。你喜欢的rust里用的{}也是多余的。
如果{}合理不多余,那do..end也不多余。但with ...(Exception):依然是偏多余的。
【 在 lvsoft (Lv(The Last Guardian)) 的大作中提到: 】
: 我们讨论问题的基本前提是有个一致的,连续的价值观。
: 比如你觉得with xxx:这个with是多余的,很不美观。
: 那么你就得解释下为什么end\nend\nend\n就不是多余的,就不是不美观。
: 我判断的价值观一直都是一致的。我不认为python在哪个局部领域是最好的,但它是综
: 合最好的。并且它不好的部分程度在我完全能接受的范围内。
: 而你前面的说法给我的感觉都是因为某个点有更好的实现,所以大家会分分钟切过去翻
: 盘。这个就很没道理。比如我们都知道有相当可观的人群是非常讨厌python用缩进来表
: 示block的。这个话题我影响中多次上过十大,那么bython这种用{}取代缩进的其他都跟
: python一样的分支实现应该大量吸引这群人啊。
--
FROM 114.84.103.*