## 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.策略模式
- 贊助商
- 捐
- 人們怎么說
- 版權
- 取得這本書