`
zhang_xzhi_xjtu
  • 浏览: 536826 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我们要写怎么样的系统

阅读更多
编程也好久了。越来越觉得一个做一个好的程序员不是一件简单的事情,只有努力努力再努力。
经常看到一些很烂的代码,总是想着怎么要把它改善一下。今天,看了javaeye的你的代码写的很烂的帖子,心里一阵的寒啊。有那么多的人在说:

在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。
在没有了解清楚前请不要轻易下结论,任何一段代码能跑起来都有它的一定道理。
恩,得用历史的发展的观念来看代码,不排除有特别的烂的代码,但是除非你读懂了整个过程,否则不要仅仅针对一段代码评价它的好坏。
千万别轻易否定别人的设计! 也许他考虑的东西比你想的多得多, 我们不能太自我了。
你几乎无法在短时间、局部的环境中体会到10年前编写这段代码的人的思路。
是的,每个人都有自己的设计思路……不应该轻易的去否定别人的作品!!

对,我承认上面说的都有道理。

好吧,那我们程序员是干什么的,我们为什么做程序员,如果有一天我们看到自己的系统都是一脸惭愧,那作为程序员自身的意义何在呢。

我很同意在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。
但是事分两说,如果一个成熟的程序员不能很快的看出一个系统的大概架构,那这个系统就是有问题的。很多时候,要费劲心机才明白一小段程序的意义,为什么,因为代码不好,没有自我解释性。本来看代码应该是只看一个架构,看一个领域模型,就差不多了,基本上靠猜应该八九不离十了。但是实际生活中呢,太多方法名和内容不符合的了,搞的人都怕怕了。

代码应该还是有好坏之分的吧,你看到一个7层的try catch不晕,你看到一个17个参数的方法不晕,你看到一个方法前条件约束2,3页的不晕,ok,我服了你了。

即使是整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。这句我还是有保留的,一个类写在哪里,一个方法出现在哪里,都是有意义的,一段代码的好坏,的确依赖于对整个方案的理解,但是,同样的,一段好的代码,本身就应该可以解释很多事情。

常见的理由,有时间紧,资源有限,功能性的需求优先级高,历史条件(这个听的最多了)。我们不是有持续重构的利器吗,不要觉得一个方法的注释,一个变量的名字,不重要,想想看,写代码和读代码的时间的比例,我们一天写几行代码,一天要读多少行代码,当你读着读着想打人,骂人的时候,多想想自己不要做这样的人。

看了这个帖子有点激动,有些言语过激了。

分享到:
评论
17 楼 zhang_xzhi_xjtu 2010-08-20  
BestUpon 写道
zhang_xzhi_xjtu 写道


我很同意在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。



这就是说,设计没有对和错之分,只有适合不是适合!


no.
我的意思是在没有了解整个程序的解决方案之前,不可能就那么轻易的判断代码的好和坏。
但是如果了解了整个程序的解决方案之后,当然还是有好坏之分的,或者说这里的好坏就是适合不适合当前的业务和技术,以及有策略的考虑了以后维护和变更。

16 楼 BestUpon 2010-08-20  
zhang_xzhi_xjtu 写道


我很同意在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。



这就是说,设计没有对和错之分,只有适合不是适合!
15 楼 freish 2010-08-19  
写代码就是为了不让别人看懂,免得有人抢饭碗
14 楼 1927105 2010-08-19  
网上放的都是新手的代码,,高级代码都屏蔽了,,,
13 楼 zhang_xzhi_xjtu 2010-08-19  
这个应该是没有做过性能测试的吧
12 楼 neptune 2010-08-19  
有一天领导说,dba发现每天晚上数据库连接在某个时刻连接连接数特别多,让我查,最后在一个循环中发现了,把得到连接写到循环中了,循环一千多次呀。这是在中国最好的互联网公司发生的,当时就郁闷了。
11 楼 windforce9811 2010-08-19  
未必非要了解整个系统才能看出代码的好坏。
看一行代码,命名是否规范,缩进是否合理,没有冗余的判断,没有大的方法(超过100行)。就符合了基本条件

再有点漂亮的算法,基本就是好代码了。

如果在此基础上,对业务做了精准的分析,有漂亮的OO体现,那就可以做典范给新人做示例了
10 楼 monnsquare 2010-08-19  
适用的代码是最好的代码~~
9 楼 xiao-qiang163 2010-08-19  
瞎扯什么蛋,楼主要淡定,不要眼里只看到别人的差而忽略了别人的优。。。。。

心如止水地去面对吧,尽力做好就可以了,
8 楼 hardPass 2010-08-19  
zhang_xzhi_xjtu 写道


好吧,那我们程序员是干什么的,我们为什么做程序员,如果有一天我们看到自己的系统都是一脸惭愧,那作为程序员自身的意义何在呢。



我做过的所有代码中,有80%以上的,我感到羞愧。

也有很少一部分,会让自己感到惊艳。
7 楼 i2534 2010-08-19  
就我个人感觉而言,就是写完的东西,下班的路上想想哪里还有问题,该怎样改代码看起来才优美,怎样才能更简练.如果一眼看上去代码像一坨屎,那基本就是烂代码.第二天上班,先改再写新的代码,如此往复.
6 楼 抛出异常的爱 2010-08-19  
一行代码一个世界
一个世界有很多行代码.
写一行代码作一次孽.
这个世界就是作孽就要还

对于那些没有勇气去重构的兄弟
你们可以先不OO先改改文件名
改改方法名
改改属性名
把方法挪挪的地方.


抽抽方法起个漂亮的名子.....给这个方法加个测试
还有很多.................

没必要害怕能干多少干多少.
不要写完功能就让测试去测 ,
祈祷自己代码不会出错.
冤孽总需要有人会去还的.不是你就是别人.
5 楼 vtrtbb 2010-08-19  
列宁同志曾经说过:当你搞不清楚这个事的时候,马*克*思*主义者的绝对要求就是,把它提到一个历史范畴之内。
所以看代码要结合当时的历史环境和系统环境来看。哈哈

注:列宁好像不会编程~~~

哈哈
4 楼 fansofjava 2010-08-18  
大多数看上去很烂的程序都是可以改进的,只是水平的问题。
要知道kent beck、martin fowler这些就是专干这种这种事的,不能改只能说明水平还不够,拿来自我安慰
3 楼 20029388 2010-08-18  
求 好代码
2 楼 zozoh 2010-08-18  
一个段程序就是一个系统

LZ 说的很好
1 楼 yoin528 2010-08-18  
内容跟标题一点关系都没有,至少不是在写怎么写系统.

相关推荐

    教与写的记忆——信号与系统评注

    首先,我们要理解“信号”的概念。在电子工程领域,信号通常被定义为随时间变化的物理量,如电压、电流或光强,它们可以用来传递信息。信号的分类多样,包括连续时间信号和离散时间信号、模拟信号和数字信号等,每种...

    宝峰888S,写频软件,可写好多杂牌机

    首先,我们要明确“写频”这一概念。写频,即编程或配置对讲机的频率参数,包括接收和发射频率、亚音、CTCSS/DCS编码、功率等级等,使得对讲机能按照特定的通信规则进行工作。对于宝峰888S的写频软件,它不仅可以...

    期末考试系统结构样题

    首先,我们要理解系统结构的基本概念。系统结构是指计算机系统的整体架构,包括处理器、内存、输入输出设备等硬件组件,以及操作系统、编译器等软件层面的设计。它关注的是如何设计和优化这些组件,使得计算机系统能...

    操作系统程序 文件系统

    首先,我们要理解文件系统的基本概念。文件系统是操作系统的一个核心组成部分,它为用户和应用程序提供了一个抽象的、易于理解和使用的接口,用于管理和检索存储设备上的数据。常见的文件系统类型包括FAT、NTFS、EXT...

    upzxt一键U盘装系统(U盘启动盘制作工具) V3.5.rar

     以上教程之外的第三种方法是原版系统的安装,我们的一键启动U盘全面支持WindowsXP和Windows7原版系统的安装,详细的安装方法请参看官方关于原版系统安装的图文和视频教程。      软件截图一    ...

    Linux操作系统基础教程

    我们并不能使同学们通过这次系列讲座成为一个 UNIX 类操作系统的高手,这次系列 讲座的目的就是在同学们中间普及 Linux 基础知识,为今后我们更加接近的了解 Linux 做一 个好的开端。 第一讲 Linux基础 在这一...

    STM32cubeMX的spi读写SD卡样程 F107vc

    接着,我们要配置GPIO引脚,将它们分配给SPI接口的SCK、MISO、MOSI和NSS(或CS)信号线。在“Pinout & Configuration”界面,选择相应的GPIO引脚,如PA5(SCK)、PA6(MISO)、PA7(MOSI)和PB4(NSS)。记得设置...

    C#做的QQ系统,窗体系统

    首先,我们要理解C#中的面向对象编程(Object-Oriented Programming,OOP)。OOP是现代编程的核心理念,它将数据和操作数据的方法封装在类中,通过实例化类来创建对象。在C#中,类定义了对象的属性(数据)和方法...

    Linux 系统内核空间与用户空间通信的实现与分析

    首先,我们要理解Linux系统的空间划分。在32位系统中,内核空间占据了地址空间的高端1G(0xc0000000到0xffffffff),而用户空间则占据低端3G(0x00000000到0xbfffffff)。在64位系统中,这种划分更为广泛,但基本...

    设计高效的数据库系统

    但需要注意的是,过多的索引会增加写操作的开销,因此要在查询性能和写入性能之间找到平衡。此外,复合索引和空间索引等特殊类型的索引在某些场景下也能发挥重要作用。 数据库优化是另一个不可忽视的环节。这包括...

    Linux下打包发布QT程序,并运行在其他没有安装QT环境或多个QT环境的linux系统上

    根据测试结果,可能需要进一步优化打包内容,例如删除不必要的库文件,或者处理特定系统的兼容性问题。 7. **注意事项**:静态编译Qt可能导致版权问题,因为某些库可能受到特定许可协议的限制。在进行打包和发布...

    Matlab与Simulink系统仿真学习心得

    Matlab与Simulink系统仿真学习心得 Matlab 是一种功能强大、实用范围广泛的软件,适用于教学、航天、网络仿真等领域。Matlab 提供了许多功能强大的工具箱,并且自带了非常详细的帮助文档,无论您是初学者还是老手...

    写文件动画

    当程序在后台进行文件写入操作时,显示写文件动画可以让用户知道系统正在进行工作,并且可以预估进度,从而减少用户的焦虑感。 写文件动画通常包括几种元素:加载指示器、进度条和可能的文字提示。加载指示器如旋转...

    文本配置文件读写

    "c语言"表明我们关注的是C语言的实现,而"跨平台"意味着我们需要关注不同操作系统下的兼容性问题。 至于文件列表中的“ini”,可能是一个示例`ini`配置文件,供学习或测试读写功能。通常,它会包含一些键值对,...

    计算机考研专业课之操作系统

    首先,我们来探讨读者-写者问题。这是一个典型的多进程同步问题,涉及到多个读者和一个写者共享资源的情况。读者只读取数据,而写者不仅写入数据,还可能改变数据的状态。为保证数据的一致性,必须确保在写者写入时...

    VC写的B样条曲线拟合程序

    在给定的“VC写的B样条曲线拟合程序”中,我们可以看到它是用C++编程语言(Visual C++ 6,简称VC6)实现的,这个程序能够帮助用户根据输入的数据点自动生成B样条曲线。 首先,我们需要理解B样条曲线的基本概念。B样...

    OA系统权限设计数据库实现.zip

    在数据库层面,我们需要建立一套完整的权限模型来支持这些功能。 1. **用户角色管理**:在OA系统中,用户通常被赋予不同的角色,如管理员、员工、部门经理等。每个角色具有不同的权限集合。在数据库中,可以创建`...

    VC实现一个简单的图书管理系统

    在图书管理系统中,我们需要设计友好的用户界面,包括各种对话框、菜单和控件,如文本框、按钮和列表视图,以便用户可以方便地进行操作。 2. **数据结构与数据库**: 系统需要存储图书信息,如书名、作者、出版社...

    PIC CMS图片网站管理系统 v1.2.ZIP

    我们来自互联网,也将永远为互联网发展和进步拼搏,我们不懂得运营与盈利,但是我们确实懂PHP技术(我们依然要学习),可以提供高标准的技术服务和安全高效的产品,希望我们的努力能为您提供一个高效快速和强大的图片...

Global site tag (gtag.js) - Google Analytics