Sam*_*ijo 9 python java readability conventions
我是一名java程序员,但现在进入"python领域"的一些东西,Python更好用.我非常确定我的代码的很大一部分对于Python程序员来说看起来很奇怪(例如,在每个if上都使用括号).
我知道每种语言都有自己的惯例和一套"习惯".因此,从可读性的角度来看,什么是Java中"走的路"的约定和实践,但实际上并不是"pythonic方式"?
这个问题没有简单的答案.您的代码需要一段时间才能成为"Pythonic".不要尝试在Python中重新创建Java习语.学习Python习语只需要时间.
看看像Python一样的代码:惯用的Python,Python代码的样式指南和Java程序员的Python(已存档).
JacobHallén曾经观察到最好的Python风格遵循Tufte对装饰的拒绝(尽管Tufte的领域不是编程语言,而是视觉显示信息):不要浪费"墨水"(像素)或"纸张"(空间)单纯的装饰.
从这个原则可以看出很多:没有多余的括号,没有分号,评论和文档字符串中没有愚蠢的"ascii框",没有浪费空间来"对齐"不同行上的东西,单引号除非你特别需要双引号,没有\继续除了必要时,没有任何评论只是提醒读者语言的规则(如果读者不知道你遇到麻烦的语言;-),等等.
我应该指出,在Python社区中,"Tufte精神的Python"的一些后果比其他人更具争议性.但语言确实很尊重"Tufte的精神"......
转向"更具争议性"(但在禅宗的Python下 - import this在翻译提示下):"扁平比嵌套更好",所以"尽快出去"而不是嵌套.让我解释:
if foo:
return bar
else:
baz = fie(fum)
return baz + blab
Run Code Online (Sandbox Code Playgroud)
这并不可怕,但也不是最优的:因为"返回"``走出'',你可以保存嵌套:
if foo:
return bar
baz = fie(fum)
return baz + blab
Run Code Online (Sandbox Code Playgroud)
一个更清晰的例子:
for item in container:
if interesting(item):
dothis(item)
dothat(item)
theother(item)
Run Code Online (Sandbox Code Playgroud)
双嵌套的大块不整齐......考虑更扁平的风格:
for item in container:
if not interesting(item):
continue
dothis(item)
dothat(item)
theother(item)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,除了特别是Python独有的风格之外 - 我的宠儿之一(用任何语言,但在Python Tufte's Spirit支持我;-):
if not something:
this()
that()
theother()
else:
blih()
bluh()
blah()
Run Code Online (Sandbox Code Playgroud)
"如果不是......别的"是扭曲的!交换两半并失去not:
if something:
blih()
bluh()
blah()
else:
this()
that()
theother()
Run Code Online (Sandbox Code Playgroud)