難在復(fù)雜性的持續(xù)增加。
如果編寫一段寫完就扔的代碼(如運(yùn)維修復(fù)),那其實(shí)是可以很快做好的,想不通的地方繞一繞總也能搞得定。
但當(dāng)你編寫的是一段大規(guī)模使用,需要持續(xù)改進(jìn),并且不斷有新功能需要添加的代碼。那么難度就急劇增加了(這也是我認(rèn)為的編程的主要難處)。
一方面,開始編寫代碼的時候就要考慮到以后的擴(kuò)展性,而這個考慮又永遠(yuǎn)不可能是完備的,也不應(yīng)該是完備的(不要過早優(yōu)化)。只有一些基本的原則,比如保持單模塊的獨(dú)立性,避免模塊間的耦合,這些原則的運(yùn)用需要豐富的經(jīng)驗(yàn),并且不一定總是用好了。
另一方面,在代碼的持續(xù)演進(jìn)過程中,需要對抗代碼的腐化。當(dāng)原來拍著胸脯的確定因素突然變成不確定因素;當(dāng)代碼引入了不合理的功能(如需要理解上層邏輯);當(dāng)有新的人來維護(hù)代碼。代碼腐化的結(jié)果是大大增加了工作量和減少了代碼的穩(wěn)定性。
掃碼匿名提建議
直達(dá)CEO信箱