C语言编程精髓读书笔记(怎样有效地使用断言和避免自由主义编码)
?從網景公司那個首席黑客口中,我終于知道了還有這本書,這本書老實說,比我看到的所有C語言書都新穎和獨特,一看就知道是大牛(微軟首席架構師)寫的書
譚浩強之輩該學習學習了
以下是這本書我寫的讀書筆記,望有興趣的讀者讀后可以跟我共同分享下書中的精彩世界
P87:
p88;
p100; c語言某些情況下,能不使用指針的就不使用指針吧;
P101
P116 斷言讓程序員更加誠實
P130:靈活性滋生錯誤性;
p152:習題答案;
165
重視編譯器的所有警告選項,讓編譯器為你查找錯誤;
P17:增強函數原型的能力;重視變量的數據類型,為變量寫詳細具體的數據類型
這樣編譯器會根據函數原型產生警告選項,達到糾錯的目的;
第一章:告訴你重新認識編譯器,盡量讓編譯器幫你糾正盡可能多的錯誤;
第二章:
P24;ANSI C中的memcpy函數中有一個行為是無定義的,表明這個地方容易出錯,需謹慎處理
P26:斷言是檢查非法的情況,而不是檢查真正的錯誤;第二個真正的錯誤是指在最終產品中肯定會出現并且必須對其處理的錯誤;斷言通常在debug版本中有效,在release版本中就會被去除掉;
還有靠斷言找出的錯誤是可以糾正,重編碼來避免此類錯誤的,但是真正的錯誤是怎么糾正啊,根本不能糾正的,如內存分配失敗時,系統就算交付給客戶運行時也有可能內存分配失敗;
P31:斷言也可以當對程序的注解使用,增強程序健壯方面的可讀性;
P33:使用防御性編程時,斷言是告訴程序維護者使用防御性編程主要防范什么的;
P34的程序中使用斷言是很有用的,因為可以告訴維護者內存被破壞了,內存越界了;
但不使用斷言的話,就達不到這個目的;
P41:使用斷言是為了捕捉不應該發生的錯誤情況;
一般教科書鼓勵程序員進行防御性編程,但要記住這種編碼風格會隱瞞錯誤,當進行防錯性編碼時,如果不可能發生的情況的確發生了,要使用斷言報警;
P153;這個ASSERT宏有個最大的優勢是可以使該ASSERT宏用在表達式里時編譯器就報錯;
79:良好的設計函數的接口,為調用該函數的人減輕負擔;
第五章:
P86:在缺省狀態下,用戶并不知道是具有有符號的位域還是無符號的位域
這是對這一頁上面的那個小程序的總結;
P87:注意char型變量和“<”操作符之間的關系;比較字符時,就要聲明為unsinged char*這樣更詳細些,要聲明更為詳細地數據類型;
P88:有時程序出錯(上溢或下溢),發現這樣的BUG,就要關注你設定的具體變量類型有沒有上限值,是否達到了這些上限值;
P91:這個程序中的斷言是為了排除混亂,告訴讀者這個函數的執行意圖;
p100; c語言某些情況下,能不使用指針的就不使用指針吧;使用計數器控制遍歷范圍要比指針稍微好些;使用指針遍歷范圍的危害性,pch變量本身會不會溢出啊;
P101:能使用除法的,不要使用移位,
第六章:
P122:習題3)可以看出C語言編程的靈活性,呵呵,靈活性會滋生BUG的;
P130 微軟的人寫書就是不一樣,好像否定了自由黑客主義;寫代碼要考慮到產品發布和工程進度。寫代碼也要像微軟那樣商業化,產品化;
總結
以上是生活随笔為你收集整理的C语言编程精髓读书笔记(怎样有效地使用断言和避免自由主义编码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nico的刷题日记(一)
- 下一篇: 便宜运行linux芯片,个头小本事大:1