编程也好久了。越来越觉得一个做一个好的程序员不是一件简单的事情,只有努力努力再努力。
经常看到一些很烂的代码,总是想着怎么要把它改善一下。今天,看了javaeye的你的代码写的很烂的帖子,心里一阵的寒啊。有那么多的人在说:
在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。
在没有了解清楚前请不要轻易下结论,任何一段代码能跑起来都有它的一定道理。
恩,得用历史的发展的观念来看代码,不排除有特别的烂的代码,但是除非你读懂了整个过程,否则不要仅仅针对一段代码评价它的好坏。
千万别轻易否定别人的设计! 也许他考虑的东西比你想的多得多, 我们不能太自我了。
你几乎无法在短时间、局部的环境中体会到10年前编写这段代码的人的思路。
是的,每个人都有自己的设计思路……不应该轻易的去否定别人的作品!!
对,我承认上面说的都有道理。
好吧,那我们程序员是干什么的,我们为什么做程序员,如果有一天我们看到自己的系统都是一脸惭愧,那作为程序员自身的意义何在呢。
我很同意在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。
但是事分两说,如果一个成熟的程序员不能很快的看出一个系统的大概架构,那这个系统就是有问题的。很多时候,要费劲心机才明白一小段程序的意义,为什么,因为代码不好,没有自我解释性。本来看代码应该是只看一个架构,看一个领域模型,就差不多了,基本上靠猜应该八九不离十了。但是实际生活中呢,太多方法名和内容不符合的了,搞的人都怕怕了。
代码应该还是有好坏之分的吧,你看到一个7层的try catch不晕,你看到一个17个参数的方法不晕,你看到一个方法前条件约束2,3页的不晕,ok,我服了你了。
即使是整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。这句我还是有保留的,一个类写在哪里,一个方法出现在哪里,都是有意义的,一段代码的好坏,的确依赖于对整个方案的理解,但是,同样的,一段好的代码,本身就应该可以解释很多事情。
常见的理由,有时间紧,资源有限,功能性的需求优先级高,历史条件(这个听的最多了)。我们不是有持续重构的利器吗,不要觉得一个方法的注释,一个变量的名字,不重要,想想看,写代码和读代码的时间的比例,我们一天写几行代码,一天要读多少行代码,当你读着读着想打人,骂人的时候,多想想自己不要做这样的人。
看了这个帖子有点激动,有些言语过激了。
分享到:
相关推荐
首先,我们要理解“信号”的概念。在电子工程领域,信号通常被定义为随时间变化的物理量,如电压、电流或光强,它们可以用来传递信息。信号的分类多样,包括连续时间信号和离散时间信号、模拟信号和数字信号等,每种...
首先,我们要明确“写频”这一概念。写频,即编程或配置对讲机的频率参数,包括接收和发射频率、亚音、CTCSS/DCS编码、功率等级等,使得对讲机能按照特定的通信规则进行工作。对于宝峰888S的写频软件,它不仅可以...
首先,我们要理解系统结构的基本概念。系统结构是指计算机系统的整体架构,包括处理器、内存、输入输出设备等硬件组件,以及操作系统、编译器等软件层面的设计。它关注的是如何设计和优化这些组件,使得计算机系统能...
首先,我们要理解文件系统的基本概念。文件系统是操作系统的一个核心组成部分,它为用户和应用程序提供了一个抽象的、易于理解和使用的接口,用于管理和检索存储设备上的数据。常见的文件系统类型包括FAT、NTFS、EXT...
以上教程之外的第三种方法是原版系统的安装,我们的一键启动U盘全面支持WindowsXP和Windows7原版系统的安装,详细的安装方法请参看官方关于原版系统安装的图文和视频教程。 软件截图一 ...
我们并不能使同学们通过这次系列讲座成为一个 UNIX 类操作系统的高手,这次系列 讲座的目的就是在同学们中间普及 Linux 基础知识,为今后我们更加接近的了解 Linux 做一 个好的开端。 第一讲 Linux基础 在这一...
接着,我们要配置GPIO引脚,将它们分配给SPI接口的SCK、MISO、MOSI和NSS(或CS)信号线。在“Pinout & Configuration”界面,选择相应的GPIO引脚,如PA5(SCK)、PA6(MISO)、PA7(MOSI)和PB4(NSS)。记得设置...
首先,我们要理解C#中的面向对象编程(Object-Oriented Programming,OOP)。OOP是现代编程的核心理念,它将数据和操作数据的方法封装在类中,通过实例化类来创建对象。在C#中,类定义了对象的属性(数据)和方法...
首先,我们要理解Linux系统的空间划分。在32位系统中,内核空间占据了地址空间的高端1G(0xc0000000到0xffffffff),而用户空间则占据低端3G(0x00000000到0xbfffffff)。在64位系统中,这种划分更为广泛,但基本...
但需要注意的是,过多的索引会增加写操作的开销,因此要在查询性能和写入性能之间找到平衡。此外,复合索引和空间索引等特殊类型的索引在某些场景下也能发挥重要作用。 数据库优化是另一个不可忽视的环节。这包括...
根据测试结果,可能需要进一步优化打包内容,例如删除不必要的库文件,或者处理特定系统的兼容性问题。 7. **注意事项**:静态编译Qt可能导致版权问题,因为某些库可能受到特定许可协议的限制。在进行打包和发布...
Matlab与Simulink系统仿真学习心得 Matlab 是一种功能强大、实用范围广泛的软件,适用于教学、航天、网络仿真等领域。Matlab 提供了许多功能强大的工具箱,并且自带了非常详细的帮助文档,无论您是初学者还是老手...
当程序在后台进行文件写入操作时,显示写文件动画可以让用户知道系统正在进行工作,并且可以预估进度,从而减少用户的焦虑感。 写文件动画通常包括几种元素:加载指示器、进度条和可能的文字提示。加载指示器如旋转...
"c语言"表明我们关注的是C语言的实现,而"跨平台"意味着我们需要关注不同操作系统下的兼容性问题。 至于文件列表中的“ini”,可能是一个示例`ini`配置文件,供学习或测试读写功能。通常,它会包含一些键值对,...
首先,我们来探讨读者-写者问题。这是一个典型的多进程同步问题,涉及到多个读者和一个写者共享资源的情况。读者只读取数据,而写者不仅写入数据,还可能改变数据的状态。为保证数据的一致性,必须确保在写者写入时...
在给定的“VC写的B样条曲线拟合程序”中,我们可以看到它是用C++编程语言(Visual C++ 6,简称VC6)实现的,这个程序能够帮助用户根据输入的数据点自动生成B样条曲线。 首先,我们需要理解B样条曲线的基本概念。B样...
在数据库层面,我们需要建立一套完整的权限模型来支持这些功能。 1. **用户角色管理**:在OA系统中,用户通常被赋予不同的角色,如管理员、员工、部门经理等。每个角色具有不同的权限集合。在数据库中,可以创建`...
在图书管理系统中,我们需要设计友好的用户界面,包括各种对话框、菜单和控件,如文本框、按钮和列表视图,以便用户可以方便地进行操作。 2. **数据结构与数据库**: 系统需要存储图书信息,如书名、作者、出版社...
我们来自互联网,也将永远为互联网发展和进步拼搏,我们不懂得运营与盈利,但是我们确实懂PHP技术(我们依然要学习),可以提供高标准的技术服务和安全高效的产品,希望我们的努力能为您提供一个高效快速和强大的图片...