我發現自己寫保持相當長的一行代碼(由殼管的影響),像這樣:寫一長串單行代碼是不好的做法?
def parseranges(ranges, n):
"""
Translate ":2,4:6,9:" to "0 1 3 4 5 8 9...n-1"
== === == === ===== =========
"""
def torange(x, n):
if len(x)==1:
(x0,) = x
s = 1 if x0=='' else int(x0)
e = n if x0=='' else s
elif len(x)==2:
(x0, x1) = x
s = 1 if x0=='' else int(x0)
e = n if x1=='' else int(x1)
else:
raise ValueError
return range(s-1, e)
return sorted(reduce(lambda x, y:x.union(set(y)), map(lambda x:torange(x, n), map(lambda x:x.split(':'), ranges.split(','))), set()))
我覺得OK,當我寫的。
我認爲長單線程代碼是一種功能性編程風格。
但是,幾個小時後,我感覺很糟糕。
恐怕我會受到可能維護它的人的批評。不幸的是,我已經習慣於寫這些單行內容。
我真的很想知道別人的意見。
請給我一些建議。謝謝
第二個例子翻譯':2,4:6,9:'到'0 1 3 4 5 8 9 ... n-1' – kev