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 类别时的建议
[编辑]译注:原文无此节。