知乎Live「迴歸本源:軟體開發中那些基本的概念」總結

浮生若夢的程式設計發表於2017-12-09

命名

這一段廢話太多,而且過於「說正確的廢話」,我沒有吸收到啥有益處的東西。

在我看來,命名把握兩點即可:

  1. 變數or常量,必須使用「名詞」(不管是純名詞,還是形容詞+名詞,都是名詞)
  2. 函式命名,必須顯式地使用「動詞」(廣義的。大部分時候人們使用的是動賓短語,我基本是跟著Java的風格走)

函式

什麼是函式

  1. 三要素:名字,輸入是什麼,輸出是什麼
  2. 最初應該是摘取的數學裡面的概念

函數語言程式設計
我對這個一直不懂,到現在也不懂,總覺得自己很難理解與掌握「函數語言程式設計」,同時也覺得「很玄,聽不懂」。 即便自己對「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軟體庫的命名、微軟的命名規範(我極喜歡)

相關文章