作者gasbomb (虚空雷神兽)
看板java
标题[问题] 应该要有多少方法(method)?
时间Thu Oct 25 20:46:39 2018
大家好
我是程式初学者,刚从 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://webptt.com/cn.aspx?n=bbs/java/M.1540471604.A.F5A.html
1F:→ starburs: 一个方法里面只做一件事 就酱 10/26 19:08
2F:→ Cavalier: 看起来不错呀 只是外面用不到的就没必要写 public 10/27 01:55
3F:→ Cavalier: 不想养成坏习惯可以多看 design pattern 里面人家怎麽做 10/27 01:55
4F:→ new122851: Clean Code 无暇的程式码 一个method只做跟method名字 10/30 11:05
5F:→ new122851: 一样的事 10/30 11:05