在上一篇博客中,提到了几种常见的过度工程,然而不幸的软件团队有各自的不幸,故事似乎远不止这么多。
又见可扩展性,到底要扩展到什么时候?
见过一些同事,写代码处处考虑灵活、兼容,已经易扩展,一个简简单单的类实现,硬生生地被拆成从接口到抽象类到策略接口到策略实现类到辅助类到工具类十几个类来完成,和可是结果呢?还没等扩展开始,项目就黄了;或者某心态居高的程序员看到了,看着不爽,想不明白,给重写了。
这类程序员拥有负责任的心态和充满热血的心肠,可他们需要健康的引导,否则这样的人会写出危害深重的代码,成为“简单问题复杂化”最常见的一种表现形式。
我们需要优秀的代码结构,需要考虑未来的一二三,可是倘若能让简洁的代码刚刚好交付,让这些兴许成为庸人自扰的可扩展性等到需要的时候再重构完成,岂不更快哉?
引入新技术的纠结
程序员对技术的狂热本质是一件好事,但是在新技术的引进上,无论小大,必须有清醒的头脑。至少需要考虑这些问题:(1)License?
(2)是否能对短期内项目带来有效提升,或者对可以预见的时期内给项目带来价值?如果提升不大,或者价值太遥远,宁愿放弃它。
(3)学习成本?
(4)问题定位成本?比如,我希望新技术有广泛的社区支持,有成熟的团队支持,有既有的成功应用,我可以拿到开源代码等等。
(5)性能、体验、可维护性等方面是否带来不可接受的负向效应?
……
分层、分层、再分层
一个通用的解决WEB应用的办法是分层,把MVC扩展,M可以归类到不同的区域中,V可以分摊到各类模板集合中,C可以拆分成Action-Facade-Service;还可以继续拆!这只是最简单的拆分,拆分永无止境,总想把这个项目所有的问题统一到一个通用的结构中去。
结果看到了诸多这样的代码:
class UserFacade
{
public User getUser(XXX)
{
return userService.getUser(XXX);
}
public void setUser(User user)
{
userService.setUser(user);
}
}
到处是这样的代码(往往伴随着尚无用的接口出现),薄薄的一层,没做什么有价值的事情,直接调用下一层的代码,除了“啰嗦”和“多此一举”我不知道还能用什么来形容它。
转测试的艰辛
ST、SDV转测试发布版本,通用的瀑布模型,但是头轻脚重。设计阶段草草了事,编码阶段不断加班+延期,到了ST、SDV阶段,拼了命地改bug,过基础功能测试用例、转测试发布,从ST两轮,SDV1再到SDV6,问题仍不见收敛,程序员大量的时间用来进行测试验证,走问题单的流程,可质量依然、似乎永远是个痛,可怜的程序员,怎么总要折腾在发布版本的边缘?
程序员还在没日没夜的干活,故事就不会停歇,也许有一天,大家都突然想,做项目应该是一件创造性的活动啊,不应该是这个样子的……
文章系本人原创,转载请注明作者和出处
分享到:
相关推荐
在建筑工程领域,施工现场的安全管理是至关重要的,尤其是临时用电安全。临时用电系统是施工过程中必不可少的部分,用于满足各种机械设备和照明设备的电力需求。"参考资料-2、施工现场临时用电验收表(含续表)GDAQ...
限位开关用于防止升降机过度上升或下降,防坠安全器能在升降机出现意外坠落时迅速制动,钢丝绳防脱装置则是保证钢丝绳在运行中的稳定性。安装时必须严格按照制造商的说明进行,确保这些装置的正确安装和有效调试。 ...
线缆敷设阶段的质量控制点包括线缆的拉开、抬放、穿越障碍、埋深、方向、通信联络、人员组织和线缆安全,防止过度弯曲、损伤外皮等。 竣工资料通常包括竣工文件、竣工图和竣工测试记录。自由时差(FF)计算方法为...
然而,由于`AsyncTask`并不适合长时间运行的任务,因此更推荐使用`Thread`或`ExecutorService`配合`ThreadPoolExecutor`来创建线程池,这样可以更好地控制线程数量,防止过度消耗系统资源。 其次,断点续传功能允许...
- 当一行代码过长时,可以使用续行符 `\` 来分隔。 - 过程式编程关注于编写函数,这些函数执行特定任务并组合起来形成程序。 - 面向对象编程(OOP)强调创建包含数据和方法(函数)的“类”,并通过这些类构建程序。 ...
3. **操作规范**:避免对吊索造成过度压力,如扭曲或打结,确保物体安全稳定。 4. **个人行为**:禁止危险行为,如骑在吊钩上、试图推动物体等。 总结来说,这门课程强调了吊装作业中对装载重量、重心和质量分配的...
### Abaqus接触分析讲义知识点总结 ...综上所述,Abaqus接触分析涵盖了从基本概念到具体应用的广泛内容,通过对这些知识点的学习和理解,可以帮助工程师们更准确地模拟和预测实际工程中的接触问题。
1. 简洁性:系统设计遵循KISS(Keep It Simple, Stupid)原则,避免复杂的设计和过度工程化,确保系统的可维护性和可扩展性。 2. 模块化:系统采用模块化设计,将功能划分为不同的模块,如用户管理、车辆管理、租赁...
3. 控制策略优化:通过智能调度策略,合理分配电池的功率需求,避免在低温下过度放电或充电,从而延长电池寿命。 三、实车验证与效果 这些解决方案经过实车验证,证实能够有效改善电动汽车在低温条件下的性能。...
开发过程中,需要遵循软件工程的最佳实践,包括模块化设计、代码审查、单元测试以及持续集成,以确保软件的质量和稳定性。同时,尊重版权法规,避免非法分享受版权保护的内容。 通过P2P内容下载缓存系统,不仅能够...
- **续灌渠道设计流量的作用和确定方法**:设计流量用于渠道尺寸设计,加大流量用于防止溢流,最小流量则用于保证下级渠道的水位控制。 - **喷灌系统规划设计**:包括线路布局、流量和压力计算、管道设计、喷头...
综上所述,这个VB音像制品出租及销售管理系统涵盖了IT教育中的一些核心知识点,如数据库设计、软件工程、用户界面设计和程序调试。它为学生提供了实践编程技能的机会,同时对理解业务流程管理和信息系统设计也有积极...
音乐播放器是一个常见的软件应用,...以上就是音乐播放器案例中涉及的主要知识点,涵盖了从用户界面设计到音频解码,再到软件工程的多个方面。通过这个案例,开发者可以提升综合技能,并对音频播放技术有更深入的理解。
### 低压电工考试模拟考试100题知识点详解 #### 1. 仪表类型与结构 - **电动式仪表**:此类仪表通过固定的线圈...- **续水多次仍味美**:高品质的花茶在经过首次冲泡后,即便续水多次,仍然能够保持良好的香气和口感。
《中国新能源汽车评价规程》是由中国汽车工程研究院股份有限公司、北京理工大学电动车辆国家工程实验室、清华大学电池安全实验室和新能源汽车国家大数据联盟共同发布的行业规范。规程旨在科学客观地评估新能源汽车的...
总之,基于STM32的GPRS远程在线升级系统设计涉及硬件选型、嵌入式编程、网络通信协议和安全策略等多个方面,是一个综合性的工程实践。通过这样的系统,可以实现设备的远程监控和高效维护,降低现场服务的成本,提高...
【农田水利学】是农业工程领域的重要学科,主要研究如何有效地管理和利用水资源,以满足农作物生长的需要。此份试题涵盖了农田水利学的基础概念、理论和应用,旨在测试学生对农田水分状况、灌溉模数、作物需水量等...
这是因为LED并非如传统光源那样能够承受过大的电流,它们对电流非常敏感,过度电流会导致过热,进而损坏LED。 恒流IC是确保LED驱动电源输出稳定电流的关键部件。例如,HV9910、PT4107、PT6901、SN3910以及IR的S2540...
同时,人口爆炸性增长和快速城市化、工业化进程对环境造成了严重威胁,如土地的过度占用、森林资源的破坏和河流污染等,这些问题都要求人类必须采取可持续的发展道路。 环境破坏导致的危害包括水质污染、大气污染、...
RCD吸收电路由电阻(R)、电容(C)和二极管(D)组成,形成一个简单的RC滤波器与续流二极管的组合。当开关器件关闭时,电感线圈产生的反电动势通过二极管导通,将能量转移至电容C,同时电阻R提供放电路径,限制了...