命名
這一段廢話太多,而且過於「說正確的廢話」,我沒有吸收到啥有益處的東西。
在我看來,命名把握兩點即可:
- 變數or常量,必須使用「名詞」(不管是純名詞,還是形容詞+名詞,都是名詞)
- 函式命名,必須顯式地使用「動詞」(廣義的。大部分時候人們使用的是動賓短語,我基本是跟著Java的風格走)
函式
什麼是函式
- 三要素:名字,輸入是什麼,輸出是什麼
- 最初應該是摘取的數學裡面的概念
函數語言程式設計
我對這個一直不懂,到現在也不懂,總覺得自己很難理解與掌握「函數語言程式設計」,同時也覺得「很玄,聽不懂」。
即便自己對「pure function」與「impure function」的概念如數家珍,但是到了生產環境寫程式碼,還是兩眼一抓瞎,這些東西很難轉化成我的實際程式碼。
介面與系統
什麼是介面,想必大家心裡都有數,但是這東西就是沒有個統一的標準的概念,「只能意會不能言傳」,能言傳出來的,也不過是「一堆無用的廢話」。
這一部分的一張圖倒是激發了我的思考。 如果把思考層次分層,那麼我們大致會有:
- Solution (business,能賺錢的那種)
- Application
- Component (我們大部分人工作在此層次,即寫某一系統的某一部分)
- Module
- Function
一門好的程式語言要能提供到 Component 層次的,語言級別的手段,方便程式設計師組織他們的邏輯,比如:
Level | Python中的概念 | Java中的概念 |
---|---|---|
Component | package | package |
Module | .py 原始碼檔案 | .java原始碼檔案(很接近,但是Java中還是有諸多限制的) |
Function | function, class,method | class,method(有嚴格約束,method只能附屬於class) |
而且語言要提供一整套邏輯完整的「隔絕名稱空間的的體制」,目前我最喜歡 TypeScript 的做法
附錄
- Live地址: https://www.zhihu.com/lives/916316021869121536
- 命名: QT軟體庫的命名、微軟的命名規範(我極喜歡)