作者StupidGaGa (笨嘎嘎)
看板C_Sharp
标题[问题] 多执行绪中,程式架构的问题:弹性与简洁
时间Wed Dec 11 16:21:22 2013
最近在写的时候遇到些许瓶颈,
希望各位前辈可以提供一点经验指点。
目前卡的比较久的是,
「程式的弹性」与「程式的简洁」不太知道该怎麽抓平衡点。
用个例子来说明,
假设今天我有两条thread,
一条抓奇摩气象的北部地区,用classN包起来
一条抓奇摩气象的南部地区,用classS包起来,
换句话说,今天我要抓北部,
我就用一个thread,叫这条thread使用classN中的参数与function。
而Class_N与Class_S中有部分function一模一样,举例:
ClassN:fun高温 + fun降雨机率 + fun湿度
ClassS:fun高温 + fun紫外线 + fun湿度
我有两种做法
做法1:保持弹性
ClassN:抓温度 + 抓降雨率 + 抓湿度
ClassS:抓温度 + 抓紫外线 + 抓湿度
优点:
(1) 如果,南部跟北部的抓温度方法不一样,只要针对该class改
(2) Debug比较快速,因为不同thread分开的class,只要是南部有错误,针对南部查就好
缺点:
(1) 如果两个都同时改变或都不改变,重复一样的程式码只是造成以後修改的麻烦。
如:南部北部的抓温度方法有改变,改了南部却忘了北部(漏掉),或要改两次(重复)
做法2:保持简洁
ClassN:ClassFun.抓温度 + ClassFun.抓降雨率 + ClassFun.抓湿度
ClassS:ClassFun.抓温度 + ClassFun.抓紫外线 + ClassFun.抓湿度
ClassFun:抓温度 + 抓降雨机 + 抓湿度 + 抓紫外线
优点:
(1) 好维护,修改抓温度或新增一个抓空气乾净度,两个地区都可以适用
缺点:
(1) 无法快速的Debug,今天抓温度出错,我却不清楚是南部的错还是北部的错。
(2) 南北部抓温度方法改变,对ClassFun修改,修改後可能导致其他没问题便有问题。
想请问各位前辈的意见与想法,
这困扰了我许久~"~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.117.37
1F:推 ck574b027:为何不设计个 Class_location 写好共通函数,有要改再 12/11 20:53
2F:→ ck574b027:在各地区 overwrite? 12/11 20:53
3F:推 mepowerlmay:Interface? 12/11 23:42
5F:→ StupidGaGa:感谢楼上各位前辈意见,我有方向怎麽做了^^ 12/12 11:38
6F:→ rex1224:interface abstract virtual 12/21 01:17