## 13.打破大型程序
并不是说你将编写全部放在一个文件中的专业程序。 你需要将它们分解成小块,将这些块放入单独的文件中,并根据需要将它们包括在其他程序中。 所以让我们看一个例子
```rb
# break_full.rb
class Square
attr_accessor :side_length
def perimeter
@side_length * 4
end
end
s = Square.new
s.side_length = 5
puts "The squares perimeter is #{s.perimeter}"
```
输出量
```rb
The squares perimeter is 20
```
因此,你会看到上述名为 [break_full.rb](code:break_full.rb) 的程序,该程序具有类定义,然后是一段代码,使用该定义来计算侧面 5 个单位的平方周长。
如果`Square`代码可以放入一个单独的文件中,从而可能需要在许多其他程序中将其用作需要的地方,这是否合乎逻辑? 如果程序很大,我们可以将它们分成较小的文件,并按逻辑命名它们,以使其易于阅读,重用和调试。
因此,遵循此原理,我将该程序分为两部分,第一个是 [break_square.rb](code/break_square.rb) ,如下所示,它只有`Square`类定义
```rb
# break_square.rb
class Square
attr_accessor :side_length
def perimeter
@side_length * 4
end
end
```
现在看下面的 [break_main.rb](code/break_main.rb) 程序,
```rb
# break_main.rb
require "./break_square.rb"
s = Square.new
s.side_length = 5
puts "The squares perimeter is #{s.perimeter}"
```
Output
```rb
The squares perimeter is 20
```
参见`require "./break_square.rb"``行,现在可以完成操作,`./break_square.rb`代表 [break_square.rb](code/break_sqare.rb) 所在的路径。 `./`表示在此文件夹中搜索。 因此,一旦程序获得文件 [break_square.rb](code/break_sqare.rb) ,它就可以在该位置简单插入代码,并与 [break_full.rb](code/break_full.rb) 相同,但是这次代码在逻辑上进行了划分和 可能易于维护。
- 前言
- 红宝石
- 先决条件
- 1.安装 Ruby
- 2.在线资源
- 3.入门
- 4.比较与逻辑
- 5.循环
- 6.数组
- 7.哈希和符号
- 8.范围
- 9.功能
- 10.可变范围
- 11.类&对象
- 12.安全导航
- 13.打破大型程序
- 14.结构和 OpenStruct
- 15. Rdoc
- 16. Ruby 样式指南
- 17.模块和混入
- 18.日期和时间
- 19.文件
- 20. Proc,Lambda 和块
- 21.多线程
- 22.异常处理
- 23.正则表达式
- 24.宝石
- 25.元编程
- 26.基准
- 27.测试驱动开发
- 28.观察者模式
- 29.模板模式
- 30.工厂模式
- 31.装饰图案
- 32.适配器模式
- 33.单例模式
- 34.复合模式
- 35.建造者模式
- 36.策略模式
- 赞助商
- 捐
- 人们怎么说
- 版权
- 取得这本书