你的代碼有教育后人的義務(wù)與責(zé)任
Reg Braithwaite先生曾在 文章里談到如何選擇在項(xiàng)目中使用什么樣的技術(shù)、工具或編程語(yǔ)言。程序員在做這些決定時(shí)必須考慮環(huán)境背景:我們將和誰(shuí)一起工作,我們將要做什么,為什么會(huì)選擇這樣的技術(shù)路線。
而我優(yōu)先考慮的不是當(dāng)前項(xiàng)目,也不是將和我一起開發(fā)的這些人。我優(yōu)先考慮的是將來(lái)的那些我未曾謀面的程序員,那些將會(huì)研究我的代碼的程序員。
我希望他們不但能修改我的代碼或增添功能,而且能從其中學(xué)到一些東西,就像是我從現(xiàn)在讀到的代碼中學(xué)到的。
這是一個(gè)難以捉摸、很難實(shí)現(xiàn)的目標(biāo)。通過(guò)代碼傳教,你需要把讀者帶回到當(dāng)時(shí)的環(huán)境。如果你使用很老的技術(shù),這反而會(huì)帶來(lái)麻煩。我們必須考慮到所處的編程文化,這是難點(diǎn)。對(duì)此我沒(méi)有建議提供,按你們認(rèn)為正確的方法做吧。
重要的是你要有愿望去傳教,去分享你的知識(shí)。如果你可以使用函數(shù)式的Javascript技術(shù)來(lái)?xiàng)l理化你的邏輯,你就有責(zé)任這樣做。如果你看到一個(gè)方法能把一個(gè)復(fù)雜的Ruby方法變成一個(gè)簡(jiǎn)單算法和數(shù)據(jù)結(jié)構(gòu),那么你就一定要這么做。這樣做并不是簡(jiǎn)單的代碼更整潔了,更是因?yàn)槟隳茏寣?lái)的程序員變成一個(gè)更好的程序員。
因?yàn)檫@些,我認(rèn)為,作為程序員關(guān)鍵的一點(diǎn)就是去擴(kuò)展我們的視野。學(xué)習(xí)函數(shù)式編程,學(xué)習(xí)各種語(yǔ)言,學(xué)習(xí)陳述式編程,學(xué)習(xí)微控制器和界面交互,學(xué)習(xí)從未聽說(shuō)的所有東西,用編程來(lái)教育自己。