如何選擇適合你的代碼風(fēng)格?
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
作者 | MushRain
來源 | urlify.cn/fABVzu
76套java從入門到精通實(shí)戰(zhàn)課程分享
代碼風(fēng)格
聲明:代碼風(fēng)格是幫助開發(fā)者更加高效的開發(fā)以及后期維修更新迭代的基礎(chǔ),良好的代碼風(fēng)格可以提升團(tuán)隊(duì)的開發(fā)效率,產(chǎn)品不同功能,在清晰簡(jiǎn)潔的代碼風(fēng)格下更加高效的被開發(fā)出來。
一,為什么需要管理代碼風(fēng)格?
試著想一下,一個(gè)程序員寫一個(gè)程序,commit
c o m m i t 到團(tuán)隊(duì)的程序管理庫里面,如果團(tuán)隊(duì)中的其他開發(fā)者需要這個(gè)功能,那么他就會(huì)去閱讀這個(gè)源碼,正所謂一千個(gè)讀者,一千個(gè)哈姆雷特。就算是代碼這樣對(duì)于計(jì)算機(jī)來說非常嚴(yán)格的語言,而在我們?nèi)祟惪磥斫^對(duì)無法拋開我們固有的邏輯思維,而像計(jì)算機(jī)一樣去思考,像程序編譯器一樣去理解這段程序,我們可以做到的就是閱讀源碼,梳理出自己的一套邏輯,然后理解這段程序的作用是干什么。簡(jiǎn)而言之,代碼風(fēng)格是一個(gè)團(tuán)隊(duì)中必須統(tǒng)一的標(biāo)準(zhǔn),不統(tǒng)一就會(huì)導(dǎo)致不同程序間的接口調(diào)用凌亂,團(tuán)隊(duì)成員對(duì)于整個(gè)程序的框架理解也不會(huì)更加清晰。
二,代碼風(fēng)格細(xì)節(jié)
為了了解如何規(guī)定一個(gè)好的代碼風(fēng)格,我們先來了解一下代碼到底由哪些部分組成。
代碼組成部分
影響自己的代碼組成部分
一, IDE:(集成開發(fā)環(huán)境),正對(duì)于不同的語言,不論是前端還是后端,都有各自的代碼風(fēng)格,選擇不同的集成式開發(fā)環(huán)境可以幫助你理解你們所正在開發(fā)的項(xiàng)目里面的一些層級(jí)結(jié)構(gòu),比如做Python,web開發(fā)的Django框架使用Pycharm是這樣的:

左側(cè)是項(xiàng)目的文件結(jié)構(gòu),右側(cè)是代碼的展示,不同文件夾采取不同的顏色加以區(qū)分,幫助更好的理解以及管理項(xiàng)目。
二, 編程字體:正如一個(gè)人的字體一樣,不同的字體反映到嚴(yán)格的代碼上面,反映自然大不相同,甚至走向相背離的極端,下面舉兩個(gè)具體的字體例子:
Magneto字體


Cascadia Code?。校套煮w



相比于Magneto那更具藝術(shù)的字體,可以很清楚的發(fā)現(xiàn)Cascadia Code字體對(duì)于代碼的展示更具優(yōu)勢(shì),不同單詞之間,不同字母數(shù)字之間區(qū)分更加的明顯,方便程序員閱讀以及理解代碼的原始意義,就好像是閱讀一個(gè)不僅僅聰明而且謙虛的人寫的作文,字體優(yōu)美簡(jiǎn)潔,同時(shí)在這種情況下,項(xiàng)目的共同構(gòu)建者也更容易發(fā)現(xiàn)你的問題,提出意見,一起讓整個(gè)程序更加的完善,魯棒性更好
代碼高亮(這一點(diǎn)非常重要)舉一個(gè)非常直觀的例子這是一張字母圖,需要你去找到所有的V字符也許你覺得很簡(jiǎn)單,

但是相比于下面這種呈現(xiàn)方式,

V一下子就找到了,是不是非常容易,你幾乎不需要?jiǎng)幽X筋,聯(lián)想到我們?nèi)祟惱斫饪陀^事物的規(guī)律,一件事物從越是多的方面去理解,自然理解的也就越深,這一點(diǎn)同樣適用于我們編寫代碼的過程,不同的高亮讓你一下子通過視覺一下子就理解了這個(gè)區(qū)域到底是什么功能。
#include <stdio.h>
#include <time.h>
void bubbleSort_1(int array[], int length);
void print(int array[], int length);
void bubbleSort_2(int array[], int length);
int main() {
clock_t begin = clock();
int array[] = {10, 1, 10, 0, 111, 121, 147, 0, 1, 3, 265, 111, 10, -156, 1315, 0001, 1518, 88, 131};
int length = 19;
bubbleSort_1(array, length);
print(array, length);
clock_t end = clock();
printf("程序總運(yùn)行時(shí)長為:%ldms", end - begin);
}
#include <stdio.h>
#include <time.h>
void bubbleSort_1(int array[], int length);
void print(int array[], int length);
void bubbleSort_2(int array[], int length);
int main() {
clock_t begin = clock();
int array[] = {10, 1, 10, 0, 111, 121, 147, 0, 1, 3, 265, 111, 10, -156, 1315, 0001, 1518, 88, 131};
int length = 19;
bubbleSort_1(array, length);
print(array, length);
clock_t end = clock();
printf("程序總運(yùn)行時(shí)長為:%ldms", end - begin);
}
稍微高亮一下就產(chǎn)生了完全不一樣的效果。
更何況還可以正對(duì)于每一個(gè)代碼細(xì)節(jié)進(jìn)行高亮

影響別人觀感的部分
首先先來看一個(gè)極端的例子:

這是一個(gè)網(wǎng)頁的JS,雜亂無章的排列,雖然由關(guān)鍵字高亮,雖然有行號(hào),雖然有優(yōu)秀的變量聲明,但是說實(shí)在的正常人都不一定可以讀懂這個(gè)代碼的實(shí)際意義到底是什么,那么如果規(guī)范化之后呢?

瞬間就舒暢了,該縮進(jìn)的縮進(jìn),該有的分號(hào)出現(xiàn)在該有的位置上,簡(jiǎn)潔的命名出現(xiàn)在該出現(xiàn)的地方,誰遇上這樣的代碼不喜歡呢?
總結(jié)
影響自己的
IDE選擇
代碼字體
代碼高亮
影響別人的:
代碼縮進(jìn)
同時(shí)影響的:
代碼命名
代碼注釋
三, 代碼風(fēng)格選擇:
這里著重介紹兩種已經(jīng)被很多程序開發(fā)者所接受的代碼風(fēng)格
K&R
K & R MicroSoft代碼風(fēng)格
K&R
具體細(xì)節(jié)
#include <stdio.h>
int main(int argc, char *argv[]) {
int a = rand() % 100;
if (a > 25) {
call_a_function();
call_another_function();
} else {
call_b_function();
} // end if
} // end main
1、8個(gè)字符的TAB鍵,列數(shù)限制在80列。
這在一定程度上要求程序開發(fā)這者必須精簡(jiǎn),否則一不小心就會(huì)超出列數(shù)限制。
2、左花括號(hào)寫在一行的末端,然而右花括號(hào)獨(dú)立一行。
節(jié)省空間,整個(gè)程序排版緊湊,連續(xù)。
3、命名法:
以精簡(jiǎn)為主:所有變量以小寫字母為主,單詞考慮縮寫, 長單詞考慮使用下劃線風(fēng)格。
int result
char user_name
char[] user_pwd
MicroSoft代碼風(fēng)格
微軟使用一個(gè)名為匈牙利編碼規(guī)范,他使用在微軟任何產(chǎn)品內(nèi),如果你要使用微軟的API,或者你也需要一套類似的編碼規(guī)范,那么學(xué)習(xí)一下總是沒有錯(cuò)的。

變量命名
int *lpiData //32位int指針
char *g_size // 全局變量指針,使用g作為前綴
縮進(jìn):
class CVector
{
public:
CVector() {}
.
.
.
private:
int x, y, z;
}
左括號(hào)與右括號(hào)獨(dú)占一行
粉絲福利:Java從入門到入土學(xué)習(xí)路線圖
??????

??長按上方微信二維碼 2 秒
感謝點(diǎn)贊支持下哈 
