[問題] 應該要有多少方法(method)?
大家好
我是程式初學者,剛從 Hello, World 跟乘法表迴圈脫離
正在練習陣列、字串,今天在想老師出的練習題
題目:
請設計一隻程式由鍵盤輸入三個整數,分別代表西元yyyy年,mm月,
dd日,它會顯示是該年的第幾天
例:輸入 1984 9 8 三個號碼後,程式會顯示「西元1984年,第250天」
(需判斷閏年)
直覺判斷這題解法是
拿一份yyyy年的月曆 => 從 1/1 開始填序數 => 填到指定日期停手 => 得到答案
依照上面流程寫出來的程式如下
https://pastebin.com/QXX5vrGZ
寫完之後看到 49 ~ 60 行的結構嚇了一跳
怕自己兩個月之後回來根本看不懂
很想在旁邊寫一串註解把自己當時的思考流程寫在上面
但是看到有些同學註解比 code 還長
程式有修改光註解重新排版就花了一堆時間
更不用說解法如果改了註解有可能全部廢掉
剛好最近上到 method, 就順手練習了一下
把這隻程式裡面的重要功能全部寫成 method
https://pastebin.com/GdCua2gx
改寫之後 main 只剩下這麼短
Scanner sc = new Scanner(System.in);
DayInYearV3 diy = new DayInYearV3();
System.out.println("請輸入年月日(YYYY MM DD):");
int yy, mm, dd;
yy = sc.nextInt();
mm = sc.nextInt();
dd = sc.nextInt();
if(yy < 1)
yy = Math.abs(yy) - 1;
diy.setEmptyCalendarOf(yy);
if(diy.isInputLegal(yy, mm, dd)) {
diy.countDIY(yy, mm ,dd);
sc.close();
}
感覺更簡潔好懂了
而且整個程式感覺完全不需要註解了
因為看方法的名字就可以讓我很具體的想像那一段程式到底在幹嘛
雖然說物件導向的優點是方法可以不斷重複使用,不必重複發明輪子
但像上面這種簡單的小程式,不知道裡面的方法還會不會派上用場
有必要把裡面的功能拆得這麼細嗎?
這樣做有沒有什麼明顯的壞處?
如果真的要寫成方法,方法的大小又該如何拿捏?
像是 setEmptyCalendarOf() 裡面又呼叫了 isLeapYear()
這種結構會不會造成日後牽一髮動全身難以維護?
是不是應該把這兩個方法寫成一個?
初學程式所以問題有點多
但是不想要在不經意的情況下養成壞習慣
請各位前輩多多指教,謝謝
--
╔═◢ ◣═╦╦═════╦═════╗
║ ◤◤◤ ◥ ╠╣飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║◤ ◥ ︺█◤ ◥╠╣Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.130.223
※ 文章網址: https://www.ptt.cc/bbs/java/M.1540471604.A.F5A.html
→
10/26 19:08,
6年前
, 1F
10/26 19:08, 1F
→
10/27 01:55,
6年前
, 2F
10/27 01:55, 2F
→
10/27 01:55,
6年前
, 3F
10/27 01:55, 3F
→
10/30 11:05,
6年前
, 4F
10/30 11:05, 4F
→
10/30 11:05,
6年前
, 5F
10/30 11:05, 5F
java 近期熱門文章
PTT數位生活區 即時熱門文章