iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Software Development

Clean Architecture 無瑕的程式碼:國中生阿吉的暑期閱讀筆記系列 第 14

Day14 : CRP 共同重用:功能不要綁手綁腳,沒用到就不要

  • 分享至 

  • xImage
  •  

使用者只需要 AI 的一部分功能,不該被迫使用全部。

今日主題:

CRP 的意思是「共同重用原則」。
它的重點是:不要把不會一起用到的東西硬塞在同一個包裡。
這樣會讓人覺得被綁手綁腳,只想用一點點功能,卻被迫拿一大堆沒用到的東西。

範例故事:

想像我去便利商店,只想買一瓶可樂。
結果店員說:「抱歉,我們的規定是要買一整個飲料箱,裡面有可樂、雪碧、果汁還有你根本不喝的東西。」
我一定會覺得很奇怪。
其實我只需要「一瓶可樂」就好。

CRP 就是告訴程式設計師:

不要把大家不會一起用的功能綁在一起,要讓使用者可以單獨拿自己需要的。

在程式中的應用是什麼?

假設我們有一個 AI 工具,裡面有三種功能:

  • 翻譯
  • 畫圖
  • 寫文章

如果你只是要「翻譯」,卻要一起下載「畫圖」和「寫文章」的程式,那就是違反 CRP。
正確的做法是:讓翻譯、畫圖、寫文章各自獨立,這樣需要的人就可以「只拿需要的那一部分」。

小小程式範例(JavaScript):

// 不好的例子:全部綁在一起
class AI {
  translate() { /* 翻譯功能 */ }
  draw() { /* 畫圖功能 */ }
  write() { /* 寫文章功能 */ }
}

// 好的例子:分開成不同的模組
class Translator {
  translate() { /* 翻譯功能 */ }
}

class Drawer {
  draw() { /* 畫圖功能 */ }
}

class Writer {
  write() { /* 寫文章功能 */ }
}

這樣,使用者就可以自己選要拿「Translator」或「Drawer」,不會被迫全都一起拿。

今天新增一個 AI 製作圖片的功能(目前先用假圖,下一步再進行串接):
https://ithelp.ithome.com.tw/upload/images/20250928/20107703fODE8C22so.png

https://ithelp.ithome.com.tw/upload/images/20250928/20107703GF9US9xZer.png

小結與一個思考問題:

CRP 的意思就是:不要讓別人因為想要一瓶可樂,就被迫買整箱飲料。
在寫程式時,要盡量讓功能可以各自獨立,這樣別人才能自由選擇。

思考問題:

如果 GPTs 是這個部落格的功能,會怎麼拆分呢?


上一篇
Day 13:CCP 共同封閉,一起變動的放一起 (給我們看海盜船!!)
下一篇
Day15 : 元件衝突,為什麼不可能完美
系列文
Clean Architecture 無瑕的程式碼:國中生阿吉的暑期閱讀筆記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言