跳到內容

Io 程式設計/Io 風格指南

來自華夏公益教科書,開放的書籍,開放的世界

此頁面應包含編寫良好 Io 程式碼的指南。請貢獻您的智慧,但為了便於讀者查詢內容,請將每個主要標題按字母順序排列。


關於賦值

[編輯 | 編輯原始碼]
  • 儘可能使用設定器,而不是直接賦值。
    • 讀/寫屬性,通常在其他語言中找到,可以透過重寫物件上的setSlot方法來模擬。但是,除非你有充分的理由這樣做,否則不要這樣做。你只會讓你的程式執行速度變慢,並增加出現錯誤的可能性。
    • 設定器在長期內更易讀。告訴一個物件setForeground(Color White)fgPen = Color White更有意義,當閱讀(因此,當維護)程式碼時。
  • 將對外部物件的直接賦值視為有害。
    • 讓外部物件決定如何影響自己的狀態。
    • 告訴物件要做什麼;它通常比你更瞭解“如何做”。
    • 如果外部物件缺少一個方法來影響你認為必要的狀態變化,請編寫一個。記住,Io 允許你這樣做,即使對於你沒有自己編寫的程式碼也是如此。

關於初始化

[編輯 | 編輯原始碼]
  • 為了保持方法不超過三個引數,請使用設定器來初始化物件狀態,只要有必要。
  • 一些物件會維護一些非平凡的狀態。init方法應該
    • 僅用於初始化物件狀態為已知的良好預設值,在必要時。
    • 不要用於初始化獲取預設字面量不可變值的欄位(例如,0,“”。從原型繼承它們。
    • 一定要用於初始化獲取預設動態建立值的欄位(例如,list() 等)。否則,此類值將被物件的
    • 不要用作設定器的替代品,設定器用於改變物件的配置,使其偏離其預設狀態。
  • 為了便於隔離和可測試性,請依賴於依賴注入
    • 除非絕對必要,否則不要嘗試獲取資源,包括檔案、視窗、網路套接字等。相反,請將它們作為引數接受。
    • 記住:物件擁有關於自身的特定於域的知識,並且專門用於自身,僅限於自身。保持這種狀態。
    • 示例:一個電子表格物件維護一個包含公式和字面量資料的矩陣。它不知道此資訊如何儲存在資料檔案中。相反,impeximportor/exporter 的簡稱)物件用於從檔案讀取資料並適當地填充電子表格,或者查詢電子表格並相應地寫出資料檔案。檢視物件只是一種特殊型別的匯出器:一種將資料渲染到螢幕而不是渲染到檔案中的匯出器。這可以採用熟悉的矩陣形式,也可以採用某種多值圖表的形式。同樣,鍵盤和滑鼠結合在一起,形成了一種特殊的匯入器介面。因此,載入和儲存電子表格被簡化為對資料輸入的
  • 儘可能保持物件狀態儘可能小。
    • 對其他物件的引用應該只存在以允許物件完成其工作。
    • 最終執行兩個或更多個工作的物件應該重構為兩個或更多個物件。

關於方法及其引數

[編輯 | 編輯原始碼]
  • 方法名稱應以小寫字母開頭,以保持 Io 已建立的編碼約定。
  • 將超過三個引數傳遞給方法表明物件應該被重構。
    • 最小化方法的引數數量。
    • 使用充當引數集合的“引數物件”。
    • 在沒有其他有用值的情況下,始終返回self,允許其他物件方法連結在一起。
    • 使用方法鏈來重構否則需要超過三個引數的方法。
華夏公益教科書