本文是讀完前言中提到的幾本書後,結合自身的想法總結出來的如何寫好注釋的一些比較實用的方法:
有些情況下,"it", "this"等代詞指代很容易產生歧義,最安全的方式是不要使用將所有可能產生歧義的代詞替換成實際指代的詞。
如://Insert the data into the cache,but check if it's too big first.
"it"是指"data"還是"cache"? 在讀完剩下的代碼前誰也不知道指代的是誰。那還要注釋做什麼?替換成要指代的詞後讀者就可以直接了當的知道接下來的代碼要做什麼了。
//Insert the data into the cache,but check if the data is too big first.
注釋一定要精確的描述方法的行為。避免由於注釋不准確而造成的誤調用。
如你寫了一個方法統計文件中的行數
//Return the number of lines in this file
public long CountLinesInFile(string fileName)
上面的注釋不是很精確,因為有很多定義行的方式,下面幾種情況這個方法的返回值無法根據注釋快速的判斷出來。
假設該方法的實現是統計換行符的(\n)的個數,下面的注釋就要比原來的注釋更好些。
//Count how many newline symbols('\n') are this file
這條注釋包含更多的信息。讀者可以知道如果沒有換行符,這個函數會返回0。讀者還知道回車符(\r)會被忽略。
對於注釋來講,一個精挑細選的例子比千言萬語還要有效,而且更加直白有效,閱讀速度更快。
如: /// <summary>
/// Remove the suffix/prefix of charsToRemove from the input source
/// </summary>
public string StripPrefixAndSuffix(string source, string charsToRemove)
這條注釋不是很精確,因為它不能回答下面的問題
而一個好例子就可以簡單直白的回答這些問題:
/// <summary>
/// Example: StripPrefixAndSuffix("abbayabbazbaba","ab") returns "yababz"
/// </summary>
假設你看見這樣的函數調用:
ConnectMailServer(100,false);
因為直接傳入的是數值和bool值,使得這個調用很難理解,在這種情況下可以使用C#的具名函數以便代碼閱讀者快速知道這兩個參數的含意。
假設函數是這樣的:public void ConnectMailServer(int timeout_s, bool useEncryption)
那我們可以這樣使用具名函數:
ConnectMailServer(timeout_s: 100, useEncryption: false);
代碼閱讀者一眼就能看出這兩個參數的作用。
代碼的閱讀者和調用者都是程序員,程序員間有大量的專有名詞可以用來描述一些模式和解決方案,使用這些詞,可以簡單明了的闡述你代碼的含意。
假設你原來的注釋是這樣的:
那麼你完全可以簡單的說:
//This class acts as a caching layer to the database.
程序員一看caching layer就明白這個類是做什麼的了。而且就算新手不明白,你的注釋也很難給他講明白的,還不如給他個關鍵詞,讓他自己去Google或向別人請教。這樣的效果比你的注釋會好的多。
再好的注釋也會隨著內容的更改而變得越來越沒有意義,有時候甚至會對讀者造成誤導,產生不必要的bug。所以在更改代碼後,記得要更新所更改代碼的注釋,使其表達最新代碼的含意。
當自己不確定自己的注釋是否合格時,請周圍的同事讀下你的注釋,看他讀完注釋後說出的想法是否是你想要表達的,是否有信息遺漏和誤解等。
c語言概要
第一章、 概述
1、 c語言的基本知識
1.1、 c語言的執行步驟
編輯-程序代碼的錄入,生成源程序*.c
編譯-語法分析查錯,翻譯生成目標程序*.obj
(語法或邏輯錯誤,從第一個開始改,變量定義,語句格式,表達式格式等)
鏈接-與其他目標程序或庫鏈接裝配,生成可執行程序*.exe
執行
1.2、 main函數的基本知識
main()函數的位置
c程序總是從main( )函數開始執行
一個c程序可以包含一個主函數,即main()函數;也可以包含一個main()函數和若干其它函數
1.3、 c程序的結構
函數與主函數
程序由一個或多個函數組成
必須有一個且只能有一個主函數main()
程序執行從main開始,在main中結束,其他函數通過嵌套調用得以執行
程序語句
C程序由語句組成
用“;”作為語句終止符
注釋
//
或
/* */ 為注釋,不能嵌套
不產生編譯代碼
1.4、c 程序書寫的規則
習慣用小寫字母,大小寫敏感
不使用行號,無程序行概念:通常一個語句占一行
可使用空行和空格
常用鋸齒形的書寫格式;同一層次結構的語句上下對齊。
第二章、基本數據類型與運算
2.1、c程序的數據類型
注意類型和變量含義的不同(類型是固定好的名字,變量是自己起的名字)
變量占用的存儲空間
數據類型
基本類型:整型、字符型、浮點型(單精度型,雙精度型)
構造類型:數組類型、結構體類型
指針類型
空類型
注意基本類型賦初值的方式
基本數據類型的表示形式
整形數據
十進制:以非0數字開頭,如:123,-9,0
八進制;以0數字開頭,如:0123,067
十六進制:以0x開頭,如:0x123,0xff
實型數據
十進制:必須帶小數點,如:123.0,-9.0
指數形式;如:1.23E3,0.9e-2,5e2
字符型數據
普通字符:如:’a’,’2’,’H’,’#’
轉義字符:如:’\n’,’\167’,’\xlf,’\\’
(實現幾列的對齊:指定寬度。如%100\ ‘\t’制表位)
(字符串長度。“abc\n\t\\” strlen 6; sizeof 7)
基本數據類型的存儲長度
整型
Int 字節數 2 位數 16 數的表示范圍 -32768—32767
Short 2 16 -32768—32767
Long 4 32 -2147483648—2147483647
實型
Float 4 32 3.4e-38---3.4e38
Double 8 64 1.7e-308---1.7e308
字符型
Char 1 8 -128----127
2.2、標識符命名規則
C語言標志符命名規則
標識符有數字,字母,下劃線組成
標識符的首字符必須為字母和下劃線
標識符不能為c語言的保留字(關鍵字)
如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long ......余下全文>>
汗。。。。你把書上的題目變下就可以的~~~這樣的東西基本上都是形式!!別花太多時間在上面~~
自己好好學C語言才是真的~~