在第三四部分中,主要探討的是具體的編程開發實踐過程中的注意事項,相比一二部分,這些更具體,具體到變數。如果一個編程新手看這邊書,從這裡入手應該是個不錯的選擇,因為它貼近實戰,能給人最直接的感受。可惜的是,初學編程時我並沒有看到這本書。
這裡,對變數命名是拒絕隨意定義的,非常強調變數表達的含義,作者相信合理的變數命名可以讓程式自我注釋,讀起來很自然,也就不容易犯錯。變數一般是需要初始化的,儘管很多語言並不強制這一點,剛開始學編程的時候也容易忘記這一點;控制變數的範圍,全域變數少用;密切注意程式中的指標和動態分配記憶體,通過它們產生的記憶體泄露和緩衝區溢位,已經困擾了人們幾十年,雖然發表了眾多的論文和工具,問題卻依然存在。在現在的開發過程中(Lua語言),如果你在某個位置(預定義允許位置外)定義了全域變數,是會給出輸出警告的,必須把它修改為局部變數。關於範圍,在python、Lua或者OCaml這樣的語言中,允許在函數中定義函數(閉包),這時候產生了所謂的upvalue,是特別要注意的,而且不同的語言中其作用方式是有差異的(python與lua閉包的一點不同),所以請記得深入一種語言去編程。
使用語句的時候書中也討論了很多方面,就是要讓程式可讀、易讀、美觀,為了達到理想的效果,作者也提出了一些方法如表驅動法,通常來說,一條語句至少不能太長不能一口氣表達太多的操作或者條件判斷,語句間不能嵌套的太深,所有的語句應是在同一個抽象層次上表達操作,注意預期的正常路徑和非法路徑的安排順序,避免雖然正確但容易被人誤解(主要是還不完全熟悉語言的人,可誰能說自己完全熟悉某語言呢)的表述(如優先順序次序問題),對goto的謹慎使用(Lua中沒有goto也用的挺好)。在實際的工作中發現,其實更多的問題並不是語句本身,而是對問題抽象的把握,該把哪些語句組織在一起成為一個功能函數,確定了這個,變數的命名、語句的編寫都會順利很多。
這兩部分的實用性和可操作性都很強,特別適合正在入門的人閱讀學習,剛開始的時候習慣容易養成也容易改,接受好的習慣是一個優秀的習慣。這兩部分涉及的問題,處理的效果如何將決定系統的最終品質,規劃設計的再完美最終要落實到正確可靠的實現上體現,作為最一線的編碼人員一定要認真領會。