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 檔案時的建議

編輯

檔案內必須以下列順序定義:

  1. Module 的文件說明字串(請參考下一章:文件)
  2. Namespace 宣告
  3. Import 述句
  4. Enums/Classes/Structs/Interfaces
  5. Functions
  6. 當 script 執行時的主要執行代碼。
  7. Assembly attributes
  建議 一個檔案放一個類別。如果你放了多個類別在同個檔案裏,切割他們。如果有類別放在類別裏,這是可以接受的,因為它仍然是一個檔案放一個類別。

寫作 Boo 類別時的建議

編輯

譯註:原文無此節。