数学建模社区-数学中国
标题:
[转帖]成为优秀程序员的三十条规则
[打印本页]
作者:
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 C
2 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 c
0 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% |* Q
3 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 s
6 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