跳到内容

Io 编程/Io 风格指南

来自维基教科书,开放的书籍,开放的世界

此页面应包含编写良好 Io 代码的指南。请贡献您的智慧,但为了便于读者查找内容,请将每个主要标题按字母顺序排列。


关于赋值

[编辑 | 编辑源代码]
  • 尽可能使用设置器,而不是直接赋值。
    • 读/写属性,通常在其他语言中找到,可以通过重写对象上的setSlot方法来模拟。但是,除非你有充分的理由这样做,否则不要这样做。你只会让你的程序运行速度变慢,并增加出现错误的可能性。
    • 设置器在长期内更易读。告诉一个对象setForeground(Color White)fgPen = Color White更有意义,当阅读(因此,当维护)代码时。
  • 将对外部对象的直接赋值视为有害。
    • 让外部对象决定如何影响自己的状态。
    • 告诉对象要做什么;它通常比你更了解“如何做”。
    • 如果外部对象缺少一个方法来影响你认为必要的状态变化,请编写一个。记住,Io 允许你这样做,即使对于你没有自己编写的代码也是如此。

关于初始化

[编辑 | 编辑源代码]
  • 为了保持方法不超过三个参数,请使用设置器来初始化对象状态,只要有必要。
  • 一些对象会维护一些非平凡的状态。init方法应该
    • 仅用于初始化对象状态为已知的良好默认值,在必要时。
    • 不要用于初始化获取默认字面量不可变值的字段(例如,0,“”。从原型继承它们。
    • 一定要用于初始化获取默认动态创建值的字段(例如,list() 等)。否则,此类值将被对象的
    • 不要用作设置器的替代品,设置器用于改变对象的配置,使其偏离其默认状态。
  • 为了便于隔离和可测试性,请依赖于依赖注入
    • 除非绝对必要,否则不要尝试获取资源,包括文件、窗口、网络套接字等。相反,请将它们作为参数接受。
    • 记住:对象拥有关于自身的特定于域的知识,并且专门用于自身,仅限于自身。保持这种状态。
    • 示例:一个电子表格对象维护一个包含公式和字面量数据的矩阵。它不知道此信息如何存储在数据文件中。相反,impeximportor/exporter 的简称)对象用于从文件读取数据并适当地填充电子表格,或者查询电子表格并相应地写出数据文件。视图对象只是一种特殊类型的导出器:一种将数据渲染到屏幕而不是渲染到文件中的导出器。这可以采用熟悉的矩阵形式,也可以采用某种多值图表的形式。同样,键盘和鼠标结合在一起,形成了一种特殊的导入器接口。因此,加载和保存电子表格被简化为对数据输入的
  • 尽可能保持对象状态尽可能小。
    • 对其他对象的引用应该只存在以允许对象完成其工作。
    • 最终执行两个或更多个工作的对象应该重构为两个或更多个对象。

关于方法及其参数

[编辑 | 编辑源代码]
  • 方法名称应以小写字母开头,以保持 Io 已建立的编码约定。
  • 将超过三个参数传递给方法表明对象应该被重构。
    • 最小化方法的参数数量。
    • 使用充当参数集合的“参数对象”。
    • 在没有其他有用值的情况下,始终返回self,允许其他对象方法链接在一起。
    • 使用方法链来重构否则需要超过三个参数的方法。
华夏公益教科书