zoukankan      html  css  js  c++  java
  • 程序是给自己看的还是给别人看的

    不知道各位程序员有没有用自己的姓名的拼音字母作为文件目录名或程序名的经历。从我对此观察来看,很多人都是这样做的。他们为什么这样做?我发现除了这样做可以醒目地找到目录和文件之外,更重要的是反应了程序员的私有性,他强调了程序的私有。我们常常会发现有一个有趣的现象:程序员从不主动地把自己程序给其他程序员去阅读(除非上级要求、工作移交),程序员也不想看别人的程序,抱怨看不懂别人的程序!程序员读不到别人的程序,程序员不想将程序给别人看-〉程序员就得不到别人对程序意见-〉程序员就不会改进程序的可阅读性-〉程序可读性低-〉其它程序员就看不懂-〉看不懂就不愿意看-〉看的程序就少-〉阅读水平降低。这样导致程序员只能读懂自己的程序,其阅读他人程序的水平普遍很低。

    程序员一旦将程序变成了日记,一旦只给计算机阅读,这样一来我们这些外人就无法从程序本身中看到程序员的水平了。我们只能根据他们开发的项目、承担的职能等外在的表现来判断他们的水平了。而这些往往不如程序来得直接。我认为存在这个现象有以下原因:

    第一、面子

    程序员是很有自信的人群,上面文章我也分析过了自信的来源。这种自信反映在编程上是就会认为自己编写程序是最好的,即使知道自己编写的水平很差,也不会告知别人。这是程序员面子在作怪。他们不想进行比较和竞争,各自抱着自己的程序在那里自娱自乐。而且,业界也容忍这个现象。导致程序员理所当然地认为程序是自己编的是自己的,想给别人看就给别人看,想不给就不给。尤其是新手、那些自己感觉水平不行的程序员更加不愿亮出程序出来。怕丢面子!

    第二、   保密

    还有一些程序员则认为程序里包含了解决问题的算法和技巧,是自己的辛勤劳动,是自己的知识产权。如果给人看了,别人就会无偿地拿了过去,自己的劳动就会白费。所以,他们不愿意公开自己的程序。

    如果真的这样,那我是非常理解的。但是,就我的经验来看绝大部分程序员和绝大部分程序都是很难到达可以达到知识产权这个层面的。回首各自编程有哪些是别人不能编的呢?有哪些是别人不能超越的呢?即使有点小的技巧也不必藏而不露吧。好的程序员是不会去背这些包袱去获取新的进步的。

    说到底还是个程序员程序私有的思想在作怪。

    第三、环境

     有时候我和程序员谈到这个问题时,他们认为不是自己不愿意给别人看,而是别人不想看,自己想看人家不给看。这里确实是一个环境问题,没有人要求程序员这样做。这个编程环境并不鼓励程序公开,不鼓励程序的优化,不鼓励程序的共享,反而使哪些编程水平差的得到了伪装,那些编程水平高的得到淡化。由于没有制度上、管理上的明确要求,这个问题就会长期存在。而我认为,程序员既然是个性张扬的群体,那为什么不能从自身做起,以给别人看的要求编写程序呢?不能以学习的态度请教程序写的好的同行呢?学习是获取的过程,也是将来给予的基础。只要有利于程序水平的提高,我们程序员都可以去尝试,用不了多久我们环境就会好起来。我们的程序交流和技术交流就会好起来,我们程序员的心胸就会开广起来。

    就我而言,我编过无数个程序,但我从来没有保留过自己的程序,我的程序都是给我的同行看的、保留的。因为,我认为程序是给别人看的。虽然是自己写的,但是只有给别人看,才能发挥其真正的价值,就如同一篇文章只有给读者阅读,才能评价出文章的好坏。唯有给别人看,才能促使自己提高程序的可读性、才能获得别人的批评和建议、才能改进程序的不足、才能提高自己的编程水平。

    我建议程序员要养成“程序不是给自己看的,是给别人看的”习惯,尤其是新手,从开始就要养成这个习惯,要放下面子,请别人看看自己的程序,请别人提提意见,这样自己的水平才能提高,同时,自己也要学着看别人的程序,学会向别人提出意见和建议,学会从别人的程序中学到好的编程风格和编程技巧。通过这两方面的努力,形成一个程序员之间互动的氛围,程序员的水平一定会有一个很大的提高。

  • 相关阅读:
    SQL的四种连接(内连接,外连接)
    MySQL连表操作之一对多
    [转]Mysql连表之多对多
    Hibernate笔记二
    Hibernate框架报错:org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.mikey.hibernate.domain.Person.pid
    Hibernate框架:org.hibernate.exception.SQLGrammarException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java92)
    [转]网络编程三要素
    Hibernate笔记一
    JavaScript高级特征之面向对象笔记
    Myeclipse创建HTML文件中文显示乱码问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1733515.html
Copyright © 2011-2022 走看看