数学建模社区-数学中国

标题: [转帖]成为优秀程序员的三十条规则 [打印本页]

作者: solucky    时间: 2004-8-26 13:41
标题: [转帖]成为优秀程序员的三十条规则
1)学习应该从基础打起,不要一开始就尝试最高深的技术。 " ]2 d0 c6 _$ \; R

+ u' y! j, L% X! e2 J  2)每看一本书,不要说这章我以前学习过了,也掌握的很好,因此我可以跳过这一章看 更重要的了。 # O/ q2 h; }3 \( {

" `2 a! P: V$ [- P- _) l  3)对于作业,遇到不会的尽量不要立刻向别人请教。如果实在解决不了的问题,可以先完成你会的,然后把一些特别的难点提炼出来,向高手请教。 . ]2 {" A, Y0 Y6 U7 w& j

, F% Z8 e1 B$ a  \: T0 H. Y  3)不要指望书本和行家能帮你解决一切问题,因为并不是所有问题都能由别人教给你。
) ~0 I+ N! }# p1 U' T8 Q7 f" U
" Q1 M6 R! Z, x; j) X  4)向别人请教问题应该把问题说明白。对于错误提示信息应该原样提供出来,不要按自己理解的信息提供。因为既然你自己做不了,说明你理解一般都有问题。
3 V9 w" t9 J- y! L# r- u
5 T% k& Y: C% g  5)问问题最好能带代码。 ; ^% B+ ?, f% [* K2 I  z

1 j3 I' N/ \% h7 a" n8 \8 _  6)不要说“编译通过,可是运行时...",因为编译错误和运行错误可能根本没有关系。 一般来说,编译是语法问题,而运行是逻辑问题。
  O: A+ g% J9 w+ v. D0 ^" O. ~! e/ j& m0 R7 N/ v6 B
  7) 书看千遍不如做程序一遍,应该尽量尝试去写程序。 ) |+ U% X8 q7 t- S% {4 Z$ n

4 Y7 \! A- W4 z1 B  8)做程序千个不如做好程序一个。应该尽量完善你现在做的程序,而不要不断开新的计 划,而每个计划都虎头蛇尾。 3 W3 G, {! N; r0 y2 m
2 E. q  v/ Y+ m
  9)要想到你不是一个人写程序,而是和大家一起写程序。
: Y% P4 h5 U) X5 @  G+ _7 C$ d, E4 V$ G
8 D: s/ a8 [; I' g  10)高深的技巧虽然显示了高深的本领,但是对于合作往往是有害的,应该尽量写出简 单易读的代码。
5 B* ?3 o0 u' j4 E& l1 ]# X# o0 |" ~* g; m( H0 u
  11)编制程序应该尽量做到自注释,即代码本身一读就懂,好象自己在说明自己的逻辑一样。 8 v5 B- W2 A! u9 n1 l. G
& H7 d& W4 ]3 J
  12)复杂的代码如果实在做不到自注释,应该给出适量的注释。
# W" J* ^  H6 T$ T; o. g  d/ ^  M, @. h9 s  ^  G8 G% ^& m- l" t
  13)注释在修改代码的时候应该相应修改,不能用陈旧的注释去误导别人。
& l. C9 l- f; X' n8 |6 y' v. G) Z. Y8 }- G1 L- J" e- [+ s
  14)代码应该尽量可重用,相同功能的代码应该由相同的函数完成,重要函数应该给出调试信息,以便调试时及早发现问题。 0 \" P) Y" G+ h- H
! G2 |  X* r! r8 g6 ]  ~7 [8 z/ k5 Y
  15)应该尽量写小函数,每个函数尽量不要超过40行或者更少。这样不用滚动屏幕也许就可以读完整个函数。 ; P* h5 }- n9 M/ L

& E: Z" Y9 i4 f6 l! a  16)对于switch语句,尽量不要有过多的分支,如果分支太多,可以考虑用跳转表。 % A2 \$ X0 ?( ]

$ W3 o2 j. W2 k  17)尽量少使用一些有争议的语句,如goto和三目运算符,既然有争议,它肯定有一定的缺点。 8 y4 [6 o$ {1 Z& E! |# M/ x7 N2 Q  w# Q9 z
3 I' ^0 x3 q4 M; T8 z
  18)对于goto,许多工程师技术高到可以合理使用,而不至于导致问题。但是你的程序并不一定给你同水平的人看和修改,他们可不能保证合理的读和修改这些相关代码。
6 ?; x2 A+ A. ]( h" p
6 l  H2 x# Q( U4 ~  b+ ^% g  19)代码编写时应该有一定的格式,其基本要求是对理解代码有一定帮助。
  z6 C! [) O( b5 N
- ]: t& z6 Z7 e  20)如果数据是多个模块共有的,应该提供一个封装的类来管理它,并提供一个合适的接口给各个模块。这样,如果数据内容有重大修改,则只要接口不变,基本上可以保证程序不要很复杂的修改。
7 M' A* ?3 e+ q. v8 E
  Q5 u' \5 _4 ]  21)应该尽量考虑到数据的并发控制。
' A1 M: Y3 B6 L9 }+ \( ~' J4 p0 N- c6 i6 ?! k3 o
  22)数据的并发控制应该封装在接口内,而不要暴露给其他模块,这样可以减少因为并发原因导致的程序死锁。
, T0 i+ r4 J3 A0 i2 F1 ~2 o2 m9 k& V* ^. K7 r+ z8 {
  23)数据本身结构不可以太复杂。应该尽量把不相关的数据分割成为两组数据。
) D) O8 @8 e2 a/ e9 U* f2 E
5 u/ A: P9 K$ Y4 f7 e4 A: }  24)对于数据量比较大的情况,应该考虑数据库。
" V) z1 v9 a- A
* Z# O8 }6 q6 R7 T  w  25)数据库接口应该采用标准ODBC或者ADO接口,尽量不要根据实际数据库DBMS提供的接口来处理,因为你可能在实际使用中更换DBMS。   Q1 ^2 @' X' ^7 _# `
8 m+ Q3 K4 Z+ w7 B0 M5 n( V
  26)小的数据可以考虑文件,文件路径应该必须设计成相对路径。 $ }% c' E9 O8 Z& v0 e6 ]  X

1 _2 w, C( @& i9 ^& C  27)在一个函数中,应该尽量打开文件后使用完后立刻关闭,这样其他程序可能使用文件。 # q* s1 f1 e, e0 U& d# F# n! q1 V$ M
9 R) U; A3 I/ U
  28)不要尝试把文件全部读到内存中,应该分次处理大文件。 6 V* T6 e( R3 ]% E- }# E* J
. R" Q) V) t, q1 R
  29)编写程序应该提供相关的测试程序,以提供测试手段。
6 Y% {; E3 ^% |
4 m* X( u: ^, R2 f/ n  30)应该考虑代码、函数的使用情况,不要超越函数可以使用的范围使用之。
作者: fish133    时间: 2008-11-29 18:30
标题: 看这帖子,我不得不回啊。晕~
看这帖子,我不得不回啊。晕~
作者: wangleiyushulun    时间: 2009-11-12 13:16
学到了一些,呵呵,
2 |4 d6 r- e3 U* X/ Y; n
作者: legan    时间: 2010-2-1 13:28
这个没有什么新意的的,‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
作者: lirunhiu    时间: 2010-4-2 23:43
这个没有什么新意的的,‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
作者: kuang17    时间: 2010-4-11 00:40
耿老师说的一样∑··························
作者: silecainengai    时间: 2010-4-13 12:22
顶一下。。。。。。。。。。。。。。。。。。。。。
作者: jingxingde    时间: 2010-6-8 19:34
顶一下。。。。。。。。。。。。。。。。。。。。。
! `7 U" x* v7 U8 y, T3 ~% Q7 c- C
作者: duan3307464    时间: 2010-8-9 20:45
每个编程人员多少都可以总结一些,但对于新手会有所帮助
作者: duan3307464    时间: 2010-8-9 21:02
每个编程人员多少都可以总结一些,但对于新手会有所帮助
作者: GraBUAA    时间: 2012-3-18 10:29
很不错,谢谢分享
作者: yingxiaowang    时间: 2012-7-27 23:21
还是要坚持吧。。。因为学习方法对每个然的都是不一样的。。,
作者: feng67    时间: 2012-10-26 09:37
   




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5