初學 C/C++ 時有哪些需要掌握的好習慣?


保持足夠高的品味!

不光要有正確的結果,更得是正確的方式!


學會選個好變數名


感覺樓上樓上很多人都是在顯擺,不是幫助別人解決問題…… 初學者你說先學命好名?你逗我呢,我學了這麼多年,最痛苦的還是命名,C一套命名方案,C++一套,Linux一套,Windows一套,都差不多了解了,卻發現公司里有專門的一套……初學者短時間內根本無法接受。只要自己感覺合適就好了,不要專門學習,看代碼多了自然就熟悉了。 還有推薦去學C++11,我也是醉了,你讓初學者同時接納普通指針和智能指針,理解移動語義,不免太苛刻啦……

我覺得說到好習慣,你只要自然的使用語法就好了,時刻記住自己要實現的功能,經常想想有沒有更好的方法,別浪費內存,寫的代碼最好沒有注釋,別人也看得懂,經常翻看一下之前自己寫的代碼,多用版本管理系統管理代碼,同類問題多歸納總結,最好經常寫讀書筆記,不斷回顧反思……


初學時,可能還談不上什麼太好習慣。

當你讀寫的代碼在100行以內,只涉及一些可讀性問題,通常不會涉及和感受到可維護性,程序結構等因素。

到了一定程度,比如說 1000 + 行時,有一定的可維護性的感受和體現出來。

在到了一個規模較大一點的項目,可維護性,架構設計這些才會成為編程中的一個維度。

可維護性是因為人的精力的有限性,需要考慮人對項目的可控性。所以項目達到一定規模,這個問題才會變得突出。因為可維護性不好,人的可控性降低,可以導致失控。

所以初學時,可能需要強調一下,讓你的代碼的可讀性變得友好:主要因素包括:

(1)命名的簡單規則。比如說循環使用的變數名:i,j,k。定義宏要大寫,等等,這些只不過是大家共同約定俗成而傳承下來的一些習慣。怎麼達到最佳效果並沒有什麼固定規則,有的人完全沒有理解可讀性的含義,對一些東西教條化的生搬硬套,比如薛大師,他的代碼通常不超過100行,但可讀性令人髮指的低。

(2)使用正確的縮進。有的人主張保留 tab,有的人主張用空格,各有利弊。但是總之,總是保持正確的縮進是使代碼可讀的重要因素之一。

對於初學階段,以上方面如果不注意,即使代碼只有20行,可讀性也可以做到很低。

在你達到一定程度以後,比如說,配對的語句,如果他們在同一個函數範圍內,應該成對的寫。也就是說,當你寫下前面的,就立刻就地寫下後面的。然後在中間繼續插入其他代碼,比如說:

(1)malloc; free;

(2)CreateCompatibleDC, DeleteDC;

(3)GetDC,ReleaseDC;

(4)BeginPaint,EndPaint。

等等。


0. 採用一種命名規範來命名。

1. 不要把代碼都寫到一個.h, .cpp里。

2. 不要把多個步驟or功能寫到一個函數里。

3. 多用幾個變數把過程描述清楚,也別省幾個byte的內存。除非項目性能敏感到那種程度,那麼其實所謂的編碼規範要給性能讓步。

4. 學會調試器,利用它看些開源代碼,學學別人的寫法。學明白調試很重要很重要。

5. 對於STL和Boost。STL還好,Boost褒貶不一。當然都學最好了,但實際使用需要你自己判斷。

--------------------------

進階指南:

while(true)

{

design();

develop();

debug();

deploy();

summarize();

readMore();

}

p.s. 如果用C++, 請用C++11


C++初學者能用STL的地方就不要用指針。指針功能強大,不過可以等到你把正確的C++習慣養成了,基本的編程概念也熟悉了,再搞那個。

倘若到最後跟很多人一樣濫用指針,然後出了問題,反過來指責C++別的功能沒有配合濫用指針來設計,這就不好了,人就要完了。


可以參考google的code style,包括了格式和一些用法。

簡單來講,不要干作死的事情。

另外,寫好單元測試。


不要看譚浩強的書


盡量使用STL!

學C++11


首先要認清楚c和c++是不同的語言,很多人包括我自己曾經在書寫c++時用的都是c的習慣;

學習c++11, STL, Boost等,還有一個細節就是少用指針,多用引用。


有問題自己用代碼驗證,看到不明白的語法特性多翻基本經典的書,這是我的經驗。初學的時候經常想「C++能不能這樣干?」,於是經常驗證;當時的教材不是大部頭,很多複雜的語法特性沒有介紹,偶爾會看見看不懂的語法,於是經常翻primer和language


別把int* p=new int[2]寫成int*p =new int(2)


先選一門來學,懂語法後學標準庫,多寫。舊病成醫,上來就想編程習慣啥的沒用,因為我就是那麼乾的……

另外,看看教材上的標準格式,按照那種Code Style就可以,反正每個人習慣都不同,能互相理解就好。


如果沒什麼基礎,先從C開始入門吧。C++語言本身包含的東西很多很雜,對初學者來說不是太好上手。C語言出現年代更早且C++設計的時候就是要在C上添加面向對象支持。C語言的語法規範大致上是C++的一個子集,語法簡單,沒有C++的各種讓人困惑的高級特性,學起來相對簡單直接。我是大學計算機專業的,242 597 9960,我指點你


推薦閱讀:

不寫業務代碼的程序員工作內容是什麼樣子的?
說說你因為數據(代碼)潔癖,干過什麼奇怪的事情?
對於編程思想和能力有重大提升的書有哪些?
前端新人工作中多造輪子對未來的發展是好是壞?
編程東西學得多是不是一定是壞事?

TAG:編程語言 | 編程 | CC |