C++ 50条建议( F z: V. ]/ p2 G$ ^
+ n1 ?* C+ B; |' }
btw:这50条意见是通吃的) ?1 c( ?$ D& x
" K8 z2 b9 J) ]/ b9 S5 A! a
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
/ x5 c, g, Q, w) M, `$ Z
6 j* d9 h8 d& C& r 2.看《Thinking In C++》,不要看《C++变成死相》;8 Z' A) u! H; w0 f
7 l. B) i7 G1 X& l" o. J3 f6 ?
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;0 r+ X% W3 [, E( W$ F) S
" J& L; c$ M% z ]3 i6 H0 T 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
/ N6 `6 C# V- q1 L. l X* J4 ^. @, N) ~- N; k. Y3 d: R
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;5 J" Y$ V- e! I! F: G+ F. Z5 n4 F
/ i0 V ^7 G3 j9 _& N; ^ 6.会用Visual C++,并不说明你会C++;
1 |$ e3 I0 j7 i3 h$ |; M+ ~: Y3 x" O& v/ \
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;) a) _5 n: ]+ \3 Z4 p4 D- V
9 t w7 G2 k. X8 d
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
: t1 Y" m$ S- ^) Q
5 y& y3 Y/ v5 C3 u1 I/ D 9.看Visual C++的书,是学不了C++语言的;7 B1 `& \2 Q# S5 F
$ {- Q* D. n( Y* g 10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
( h3 G' }6 K. u
7 v2 l3 g- S* `) U* x5 t 11.浮躁的人容易问:我到底该学什么;——别问,学就对了;7 \3 g0 h+ M2 d' V$ D h0 q2 y4 L
6 L* o1 z% F: x7 \4 P+ }# N# T 12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
7 D' L$ |; u6 k2 f9 b
! I' Z) Z* y. ^ 13.浮躁的人容易说:我要中文版!我英文不行*—不行?学呀!
- ]$ @, s) A+ X$ _! n' H% C7 H! m5 F- o" T2 Z
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
* o2 |0 j0 w o* @, q" }: U: u* c
3 N9 [2 D3 r0 `% T4 ^1 J 15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;$ `2 m( D* o- B4 @- G
0 g$ v$ j7 ~) h9 q+ P
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
+ u; @! V4 M9 E. a5 c9 I2 t5 @/ a6 }3 }' w( D* Y$ k) r: H- z
17.C++不仅仅是支持面向对象的程序设计语言;, L, s$ l; _5 U+ c
+ R2 Y, v& \" d1 Y0 o' Q# Y 18.学习编程最好的方法之一就是阅读源代码;
8 i, l3 N9 @' w6 \* ? Y) p# G( j3 Y$ w& H
19.在任何时刻都不要认为自己手中的书已经足够了;/ T$ m" C5 d& _$ Q1 v
: Q4 y/ ?8 O( u2 o6 c: r+ v$ Z 20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
1 V* j# S7 ^; r% k# f& N2 J* w u8 C$ v. K$ b( D% Q
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
4 \5 |! S: \5 c4 x( v% A' B0 s/ V
: b% @# g: T- b! z' a Z, p) T& z 22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;# n7 s' z0 ?4 \/ x' S/ g9 J
/ j# y$ r7 d9 c4 G/ k
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
1 b6 ?5 ^' f# V: ]9 z; p4 B3 P5 V
$ a( t$ ?# t+ E: _9 S, N 24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;7 O( K, w- \! V# s- F
8 g, f" L2 e. N7 z8 w: C5 N
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
% c% n" }1 C& K% [
: n+ }2 N8 f6 k. H1 J. {5 y9 h 26.请看《程序设计实践》,并严格的按照其要求去做;" i2 Z: L, P3 z2 i3 q2 D7 P
& Z& V/ [# Y6 C( C) A) }) h 27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
3 H" O: q+ P2 p) k
+ p: t& W; k! P* q: H 28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;9 s5 v& l j" @5 ^$ Z- L4 `6 m. X
$ C6 Q( {2 J( S 29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已; }: Q. w D: }# A( a
+ G0 q( }' P( |5 x$ i
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;: H$ ^2 K8 ` `: q# Y, r( K. y
/ _( C4 N3 W3 B& C
31.学习编程的秘诀是:编程,编程,再编程;1 L1 Y* a# P& e1 U7 u; ]
2 U. e2 R0 c8 v f# X
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;* i0 B. e* ~* c" P! s* T
0 s: O/ |; Y [/ k4 | 33.记住:面向对象技术不只是C++专有的;
8 w* q1 _( F! t4 ^7 _8 D8 c% S- b4 t* Y7 i/ A. d. b
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
: b1 ?4 w8 w0 z- w* a: T, W
1 B8 p& u- D, M7 N1 O9 \ 35.把在书中看到的有意义的例子扩充;
0 K# M) I! k1 _0 O* T; p7 j: ]$ i" \. n' |2 n5 v( ^
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;7 U( z8 b; \, Y
1 K1 O/ i) [* k$ q0 J. O' u 37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
% [0 M: M- T" [3 _$ e
7 S3 C% {8 `+ L7 I1 _$ J/ b3 w 38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
( M! s% W7 M7 x( @# h/ z" v- P4 N, L
39.C++语言和C++的集成开发环境要同时学习和掌握;
# l8 |2 t" j/ Z4 }) z* ^7 W8 V
: `, t) o6 h! R0 O* u2 Y M7 C4 g 40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;" K! i a6 j3 J$ x i# P/ k
' H- q5 A/ I0 }' J5 r
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
' H0 f. S( {) @
, G9 H7 p8 Z8 M* Q% ] 42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
0 |* [( W) h2 c1 T; x
1 _" H- y6 m9 a2 J2 H2 e* U 43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
& T: b+ l% t! m: o
% R/ H4 f2 S" l+ _& [0 _ 44.决不要因为程序“很斜就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
, T$ W8 @* @2 {1 Z: n9 F _. V" g# u& R# E( }
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
$ {* Z) F9 R, c2 B4 Q* r8 m8 Y1 ?& B. R3 Y$ Z
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;- t/ C' \# U# r1 i. ?& u' y+ O7 f- i
' E! G. L( z7 P* M/ U6 u( u5 x9 d- Q
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;; T0 {1 b) ^- M) W3 G
+ S p0 ~) Q1 |/ p 48.保存好你写过的所有的程序——那是你最好的积累之一;" Y9 s2 z5 e( u
" G9 C% ?+ f+ E. Q- l 49.请不要做浮躁的人;
2 E8 k6 R7 v8 j1 O) r
! s3 d4 Q" M4 j' G2 d( e 50.请热爱C++!) K1 ]+ w& F% H' H5 ~2 g
湖盟云防火墙 u) `9 W8 v$ j2 P) n- o
- @3 z* r* s$ s; L |