BOO入門/Boo專案的架構
外觀
< BOO入門
BOO入門 > Boo專案的架構 (上一章:使用Boo編譯器 下一章:文件)
製作 Boo 專案時的建議
[編輯]這兒我將使用我寫的 IRC 機械人:Goomba 作為範例。
+ Goomba (Goomba namespace) |+ Configuration (Goomba.Configuration namespace) | |- Config.boo | |# class Config |+ Data (Goomba.Data namespace) | |- Column.boo | | |# class Column | |- Database.boo | | |# enum DatabaseType | | |# class Database | |- DatabasePreferences.boo | | |# class DatabasePreferences | |- Result.boo | |# class Result |+ Plugins (Goomba.Plugins namespace) | |- DefineCommand.boo | | |# class DefineCommand | | |# class Definition | |- Hail.boo | | |# class Hail | | |# class HailMessage | |- HelpCommand.boo | | |# class HelpCommand | |- Logger.boo | | |# class Logger | | |# class Message | | |# class Action | |- Quoter.boo | | |# class Quoter | | |# class Quote | |- RawLogger.boo | | |# class RawLogger | |- UrlGenerator.boo | | |# class UrlGenerator | | |# class Engine | |- UserTracker.boo | | |# class UserTracker | | |# class User | |- VersionCommand.boo | | |# class VersionCommand | |- UrlTracker.boo | |# class UrlTracker | |# class Url |- ActionEventArgs.boo | |# enum ActionType | |# class ActionEventArgs |- DebugLogger.boo | |# enum LogImportance | |# class DebugLogger |- Goomba.boo | |# class Goomba | |! Main Body (主體。在 Goomba.exe 執行後,這兒將會執行。) |- GoombaPreferences.boo | |# class GoombaPreferences |- IPlugin.boo | |# interface IPlugin |- MessageEventArgs.boo | |# enum MessageType | |# class MessageEventArgs |- Sender.boo |# enum SenderType |# class Sender
我建立了這些組件:Goomba.exe、Goomba.Data.dll、Goomba.Configuration.dll,而且每個 plugin 都是一個組件。
有些重要的事情你得注意:
- 對每個目錄來說,它就表示一個不同的命名空間,命名空間名稱最好也與目錄名稱相同。
- 每個 .boo 檔案最多只放一個類別。類別名稱最好與 .boo 檔案名稱相同。
- "主體"在類別:Goomba 定義之下。任何內置的可執行代碼必須放在組件內檔案的最後。
- 列舉放在類別之前。這兒僅僅是編寫代碼時的練習,所以不必要,但是建議這麼作。如果列舉超過十五個值,就單獨放在一個檔案裏。
寫作 Boo 檔案時的建議
[編輯]檔案內必須以下列順序定義:
- Module 的文件說明字串(請參考下一章:文件)
- Namespace 宣告
- Import 述句
- Enums/Classes/Structs/Interfaces
- Functions
- 當 script 執行時的主要執行代碼。
- Assembly attributes
寫作 Boo 類別時的建議
[編輯]譯註:原文無此節。