数学建模社区-数学中国

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

作者: solucky    时间: 2004-8-26 13:41
标题: [转帖]成为优秀程序员的三十条规则
1)学习应该从基础打起,不要一开始就尝试最高深的技术。
9 J  s; Q/ R# y& G' `
6 K( ~/ q1 B4 y, g# f% {  2)每看一本书,不要说这章我以前学习过了,也掌握的很好,因此我可以跳过这一章看 更重要的了。
2 ^/ g* o* T" j% y, s" [+ [
0 M! _3 f# E% h2 D* e  3)对于作业,遇到不会的尽量不要立刻向别人请教。如果实在解决不了的问题,可以先完成你会的,然后把一些特别的难点提炼出来,向高手请教。
4 P9 k- B+ K8 \5 n* D( R0 f* u# e7 O5 @. @/ A0 U8 u
  3)不要指望书本和行家能帮你解决一切问题,因为并不是所有问题都能由别人教给你。 * I% w, I, X5 B' h
% @* N. G( c# N: I7 _% b1 A- @
  4)向别人请教问题应该把问题说明白。对于错误提示信息应该原样提供出来,不要按自己理解的信息提供。因为既然你自己做不了,说明你理解一般都有问题。
: n$ ^5 G7 \. q2 v- j
( R# B6 u% A& b# L5 b8 C  5)问问题最好能带代码。
9 O/ y- e& g: I* x/ j! _  d, o9 i# \8 g/ ~+ ~) y, S2 j
  6)不要说“编译通过,可是运行时...",因为编译错误和运行错误可能根本没有关系。 一般来说,编译是语法问题,而运行是逻辑问题。
7 f  w7 h- ~# m" s3 _
( c! ~& \4 T- s- \( d6 r  7) 书看千遍不如做程序一遍,应该尽量尝试去写程序。 1 Q5 q; g+ ]% R/ D4 [& L

" }; q5 S. R# t$ C( i. z9 K  8)做程序千个不如做好程序一个。应该尽量完善你现在做的程序,而不要不断开新的计 划,而每个计划都虎头蛇尾。
4 u" U  ]7 I/ H! T! L3 C2 q, d; ]" P8 B$ k/ ?4 X
  9)要想到你不是一个人写程序,而是和大家一起写程序。 2 V/ V' c# |. j( f: X

; \- j) ], L/ Y% f" d& a  10)高深的技巧虽然显示了高深的本领,但是对于合作往往是有害的,应该尽量写出简 单易读的代码。
# j0 z$ a, @2 G1 c0 n& ?* @$ n, `6 u  J* x3 g( o% o
  11)编制程序应该尽量做到自注释,即代码本身一读就懂,好象自己在说明自己的逻辑一样。 ; O9 U5 S, M5 A. z9 [
7 {1 j* V+ z% a0 v2 Y
  12)复杂的代码如果实在做不到自注释,应该给出适量的注释。
% L0 U: ]) l) @7 k" U$ F9 y( B: z* r
  W0 I! z3 t7 Q: G! h: f2 B, ?  13)注释在修改代码的时候应该相应修改,不能用陈旧的注释去误导别人。
3 j: _9 C  w  C- U4 {$ s+ Z! V
; N8 o. j* a( S5 ], ^  14)代码应该尽量可重用,相同功能的代码应该由相同的函数完成,重要函数应该给出调试信息,以便调试时及早发现问题。
( i! S& T) k+ I6 |+ p
$ v- Y! i: d5 s+ X- K' f  15)应该尽量写小函数,每个函数尽量不要超过40行或者更少。这样不用滚动屏幕也许就可以读完整个函数。 3 s6 g' A9 r5 {* E. t0 Q' x

. `" r7 Q. T9 a3 T# f$ g- B  16)对于switch语句,尽量不要有过多的分支,如果分支太多,可以考虑用跳转表。
6 M+ Q5 ]; x- I! [" o  I3 A7 Q6 ]3 O. a, T
  17)尽量少使用一些有争议的语句,如goto和三目运算符,既然有争议,它肯定有一定的缺点。
! e8 M8 j- p  d& B- W% u% |* Q3 d+ b: s1 h, W- x  _% [/ s
  18)对于goto,许多工程师技术高到可以合理使用,而不至于导致问题。但是你的程序并不一定给你同水平的人看和修改,他们可不能保证合理的读和修改这些相关代码。
$ l$ Y% t; f# n" o3 c  X
, }2 b; R3 ?$ G3 X6 Q0 _  19)代码编写时应该有一定的格式,其基本要求是对理解代码有一定帮助。 $ }* x9 U: J+ B9 f: s. m0 }8 E
; R5 Z" g3 s1 C; C! T3 c4 u0 E% z
  20)如果数据是多个模块共有的,应该提供一个封装的类来管理它,并提供一个合适的接口给各个模块。这样,如果数据内容有重大修改,则只要接口不变,基本上可以保证程序不要很复杂的修改。 ' Q. E# \) H7 v3 |2 \& M
* w1 u" }$ w/ M  g3 p, z1 O( g* o
  21)应该尽量考虑到数据的并发控制。 0 |' _) D5 N+ f" r7 n- X( S" q
2 h+ o* b8 n, H( Q1 w
  22)数据的并发控制应该封装在接口内,而不要暴露给其他模块,这样可以减少因为并发原因导致的程序死锁。 , \1 E% l, H$ O8 C

* G0 Y2 h/ K* ^' Q( \& y  23)数据本身结构不可以太复杂。应该尽量把不相关的数据分割成为两组数据。
% p$ k! w  U3 I# h+ l% f3 h
/ r7 |/ A% x4 w' S; ~  24)对于数据量比较大的情况,应该考虑数据库。 ) N) J8 s1 q9 U0 L: p: ~" [5 E* V* U) ?

! v+ X: \. r* [/ _  25)数据库接口应该采用标准ODBC或者ADO接口,尽量不要根据实际数据库DBMS提供的接口来处理,因为你可能在实际使用中更换DBMS。
+ j$ w! g5 C  z4 s6 B; G4 p1 z* Z- Z1 `
  26)小的数据可以考虑文件,文件路径应该必须设计成相对路径。 ; x4 z) A; N" Y: }2 T
+ ?* d6 G0 @+ G; a) Z+ q2 t
  27)在一个函数中,应该尽量打开文件后使用完后立刻关闭,这样其他程序可能使用文件。
7 W4 j& m: `5 p( z/ U, V: i
& H3 ?4 C4 U- Q  g7 L  28)不要尝试把文件全部读到内存中,应该分次处理大文件。 $ i% v5 ]" }5 v' N( D& u+ P

: h% a) O0 b- }- Y* }  29)编写程序应该提供相关的测试程序,以提供测试手段。 0 Y; D2 s. E) `4 m
: Z* X, _" r7 b( h& c, B
  30)应该考虑代码、函数的使用情况,不要超越函数可以使用的范围使用之。
作者: fish133    时间: 2008-11-29 18:30
标题: 看这帖子,我不得不回啊。晕~
看这帖子,我不得不回啊。晕~
作者: wangleiyushulun    时间: 2009-11-12 13:16
学到了一些,呵呵,( ^' {9 N/ g. L4 r

作者: 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
顶一下。。。。。。。。。。。。。。。。。。。。。
8 r+ `. v% F, m3 V3 f, K' \
作者: 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