程序员浪费生命的几种方式

程序员应该要爱惜生命,做有用有意义的事情。做有用的事情,有两种方式,一、做一个对用户真正有价值的项目,这个项目是真正有意义有用的;二、朝正确的方向以正确的方式做项目。但是程序员会遇到很多失败的项目,这些系统要么是没有人用没有真正价值,要么是以不正确的方式做项目,使用不当的技术,例如,用报表工具代替查询、用ESB企业总线当作海量数据传输用,或者做一些没有实际用途的功能,如做一个万能的用户自定义查询系统、做用户自定义工作流工具、做用户自定义报表工具,这些项目无疑在浪费程序员的生命。笔者试图总结程序员浪费生命的几种方式,如下。

1、开发一个质量和性能很差的系统

程序员经常会碰到这样的项目,做出来的系统质量很差,操作无反馈,失败无提示,而且速度很慢,操作时不时要等一会儿。然而,关键是程序员没有机会或者不想参与实施和维护,失去了学习和诊断问题的机会。

2、花费大量人力财力开发一个一次性的项目

这是从事应用开发程序员经常碰到的情况,为某个客户定制化开发一个一次性的项目,然而这个项目要花费巨大的人力成本,最终开发维护周期很长,以巨大亏本收尾或无法收尾。

3、开发一个很漂亮花哨的无人用的系统

这也是当前常见的情况,客户要做一个亮点政绩工程,要做一个界面漂亮花哨“很炫”的系统,各种图表,各种交互方式、各种监控分析全部堆上,但最终这样的系统是没有人用的。这只是给领导或客人参观用的。

4、全新开发一个原有遗留的系统

程序员的领导要基于原有的系统重新做一个产品,大幅提升可维护性可扩展性,增加系统的稳定性,减少系统故障。领导决定召集人马,重新进行需求调研,需求分析,架构设计、编码开发测试。但是,这样的事情一再重复,同样类似的需求给不同的客户做了一套又一套新的系统,而且每个系统过一段时间后故障不稳定的情况依旧。各种版本、各种代码库留给了程序员......程序员需要持续给不同客户维护不同版本的系统。

5、开发一个项目范围不确定的系统

程序员所在的项目,没有人管理项目范围,没有WBS,用户提一点做一点,项目完全没有合同或契约约束,用户要做的越来越多,系统做得越来越大,最终无法控制,客户不满意,程序员也累得半死,试图讨好客户争取更大项目的计划失败。

6、开发一个没有系统角色或涉众的系统

程序员做的这个项目,虽然都有需求、有功能、有界面,但是奇怪的是,需求没有提到,也没有人知道这些功能是什么人用的。需求没有定义出系统的角色,以及角色所要参与的业务活动。然而这样的项目也不少见,

7、开发一个使用环境不确定的项目

程序员做的企业应用项目,不知道是给电脑用的还是给移动设备用的,不知道是给IE用的还是其他浏览器用的,不知道是给IE6用的还是IE10用的,不能确定浏览器平台版本。移动设备不知道是iOS还是Android,Android不知道是2.3的还是4.0的,也不能确定手机或平板电脑型号。我们知道,中等规模的企业应用都会比互联网应用要复杂很多,几乎不可能覆盖所有用户的使用终端平台,要做一个优秀系统必须有约束条件,有使用的目标平台。

针对以上各种情况,程序员经常是没办法干预的,因为,要么这是客户明知故犯的行为,要么是公司部门的战略行为,要么是由于项目经理基本的技能职责缺乏。当然程序员可以假设自己是项目经理,考虑该如何做好这些项目并适时适当的提出问题或解决办法,以免浪费自己的生命。
来源:IT瘾投稿,原文链接:http://itindex.net/blog/2013/11/27/1385565840000.html
### 回答1: 在 C/C++ 程序中,内存泄漏通常是由于程序员在使用动态内存分配函数(如 malloc、calloc、realloc)时疏忽或错误导致的。 一种常见的情况是程序员在使用动态内存分配函数申请内存后,忘记调用相应的内存释放函数(如 free)释放内存。如果这种情况发生了多次,那么会导致系统内存的浪费,并可能导致程序崩溃。 另一种情况是,程序员调用了内存释放函数,但是在调用之后仍然继续使用了已经释放的内存区域。这种情况可能会导致程序崩溃或数据错误。 此外,程序员可能会在释放指针时忘记将指针赋值为 NULL,导致内存泄漏。 在 C++ 中,还有另一种情况,即程序员使用了 new 关键字动态分配内存,但忘记使用 delete 关键字释放内存。 总的来说,内存泄漏的原因很多,但大多数情况都是由于程序员在使用动态内存分配函数时疏忽或错误导致的。程序员应该牢记内存管理的原则,尽量减少内存泄漏的发生。 ### 回答2: C/C++中可能导致内存泄漏的情况有几种: 1. 未释放堆内存:在使用`malloc()`、`new`等函数动态分配内存时,必须使用`free()`、`delete`等函数释放内存。如果忘记释放内存或者释放的次数不正确,就会出现内存泄漏的问题。 2. 循环引用:在使用引用计数的方式管理内存时,如果出现循环引用情况即两个对象相互引用,而没有外部引用指向它们,引用计数就无法减到0,导致内存泄漏。 3. 未关闭文件句柄:在使用文件操作函数`fopen()`、`open()`等打开文件时,需要通过`fclose()`、`close()`等函数来关闭文件句柄。如果忘记关闭文件句柄,系统资源将无法释放,造成内存泄漏。 4. 未释放系统资源:除了内存和文件句柄之外,还有其他系统资源也需要手动释放,如数据库连接、网络连接等。如果在使用完这些资源后没有正确释放它们,就会导致内存泄漏。 5. 堆栈不匹配:在使用C/C++的堆栈内存时,需要确保每次`malloc()`或`new`的内存分配与`free()`或`delete`的内存释放是匹配的,否则会发生内存泄漏。 6. 重复分配内存:如果在已有指针变量上多次调用`malloc()`或`new`,而没有对之前分配的内存进行释放,就会导致内存泄漏。 以上是一些常见的C/C++中导致内存泄漏的情况,正确管理内存和资源是保证程序运行稳定性和性能的重要一环,开发者需要注意避免这些问题的发生。 ### 回答3: 在C/C++程序开发中,存在几种常见的情况会导致内存泄漏: 1. 动态内存分配没有被正确释放:如果在程序中使用malloc、new等方法分配内存,但是忘记释放对应的内存,则会造成内存泄漏。例如,如果在一个循环中重复分配内存但没有释放,最终会耗尽系统内存。 2. 对象生命周期没有被正确管理:在C++中,如果对象的析构函数中没有正确释放申请的资源(如内存、文件、数据库连接等),则会导致内存泄漏。这通常发生在没有及时调用对象的析构函数或者程序逻辑错误导致无法调用析构函数的情况。 3. 全局变量未释放:全局变量会在程序运行期间一直存在,如果在全局变量中分配了动态内存但未释放,那么这部分内存会一直被占用而无法回收,导致内存泄漏。因此,在使用全局变量时,需要注意释放对应的资源。 4. 异常情况未被处理:如果程序存在异常情况,但没有正确处理,导致跳过了内存释放的代码段,就会导致内存泄漏。例如,try-catch块内没有对内存进行释放操作。 5. 循环引用导致内存泄漏:在使用动态内存分配时,如果存在循环引用(两个或多个对象相互引用且没有其他对象引用它们),并且没有采用有效的内存释放策略,就会导致内存泄漏。这种情况下需要特别注意对象的析构函数中释放相关的资源。 总之,当程序分配了内存资源但没有及时释放,或者释放不完全时,就会造成内存泄漏。为了避免内存泄漏,需要在程序中正确管理内存的申请和释放,及时释放不再使用的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值