跳转到内容

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 类别时的建议

[编辑]

译注:原文无此节。