文章標題

                           ## 畫皮畫骨難畫魂 ##

我以前聽人說“代碼是有靈魂的”,當時的我雖然覺得這句話很有道理,但我更多將它當做一種境界。像我最喜歡的星空,很美麗但也很遙遠。因爲更多的時候我關心的是代碼實現的功能而不是它那“虛無縹緲的靈魂”。我曾經以爲代碼有靈魂那就有靈魂吧,畢竟那不關我事。我信”代碼有靈魂“就像我相信量子物理學那裏面的諸多公式是正確的一樣,雖然我幾乎看不懂幾個,但我相信那些大神是對的,不過物質到底能不能超過光速和超過光速的物質到底在哪?這與我無關,反正我看不到找不到而且做不到超光速

module receive(
input clk_50M ,
input rst_n ,
input TTL_in ,
output TTL_out
);

assign TTL_out = TTL_out_data ;
reg start ;
reg [15:0] counter ;
reg [15:0] counter_2 ;
reg TTL_out_data ;

always @(*)
begin
if(TTL_in == 1’b0)
begin
if(counter < 54600)
start <= 1’b1 ;
end
else
start <= 1’b0 ;
end

always @(*)
begin
if( counter_2 > 7800 )
TTL_out_data <= TTL_in ;
else if (counter_2 > 1300)
TTL_out_data <= TTL_in ;
else if (counter_2 > 1300)
TTL_out_data <= TTL_in ;
else if (counter_2 > 18200)
TTL_out_data <= TTL_in ;
else if (counter_2 > 23400)
TTL_out_data <= TTL_in ;
else if (counter_2 > 28600)
TTL_out_data <= TTL_in ;
else if (counter_2 > 33800)
TTL_out_data <= TTL_in ;
else if (counter_2 > 39000)
TTL_out_data <= TTL_in ;
else if (counter_2 > 44200)
TTL_out_data <= TTL_in ;
else if (counter_2 > 49400)
TTL_out_data <= TTL_in ;
end

always @(posedge clk_50M )
begin
if(start == 1’b1)
begin
if(counter_2 > 16’d49400)
counter_2 = 16’d0 ;
else
counter_2 <= counter_2 + 1’b1 ;
end
else
counter_2 <= 16’d0 ;
end

always @ (posedge clk_50M or negedge rst_n )
begin
if( rst_n == 1’b0)
counter <= 16’b0;
else
counter <= (counter > 54600) ? 16’d0 : counter + 1’b1 ;
end

endmodule
這是一段關於FPGA串口接受數據的代碼,波特率爲9600,FPGA時鐘爲50M。
寫這段代碼前我沒有清晰的規劃,沒有想好如何去實現這個功能,甚至我要實現這個功能要先幹什麼都不知道! 這是我常有的狀態,寫代碼前大腦一片空白,腦中只剩下一個想法,我最終要實現這個功能。
然後開始”神不知鬼不覺“的敲鍵盤,沒錯,就是”神不知鬼不覺“,像在做夢,寫完後對敲完的代碼沒有一點印象,好像它不是我寫的。 這讓我想起裏看過的那部電影《你的名字》裏的男女主角。或許這也是一段愛情···········好吧,單身狗想的有點飛出天際了,強行回到正題。
這段代碼,老師給出了最精髓的評價”有骨有肉沒有魂“,剛開始還不太理解,但當仔細的回想和認真的讀了幾遍自己的代碼以後。
”它真的沒有靈魂“我得出了這個令我興奮和憂傷的結論,興奮是因爲我似乎抓住了代碼靈魂的尾巴,能對它有所感觸,憂傷的是它真的是一堆沒有靈魂的代碼。它空洞而生硬,像卓別林大師演的那場諷刺工業機械式的生產那家工廠裏的機器,每一次的轉動帶來的都是麻木和疲憊。它像那些流水線,將作品分解成一個個簡單重複的動作,批量生產,卻再也做不出大師那樣的精品,每一根曲線和每一個角度都是那麼的靈動,這是流水線生產出來的物品所不具有的,大師手下的作品是有靈魂的。
寫代碼也是同樣的,對於實現一個功能,如果你使用流水線式的方式東拼一塊西湊一塊,最終可能也能實現相應的功能,但是如果你仔細閱讀你的代碼,你會發現它沒有生氣,而且相當危險。像鏽跡斑斑的老式機械,苟延殘喘的勉強工作。
優秀的代碼如藝術品,整潔、清晰、優雅,如紳士,乾淨整潔又內涵豐富。
優秀的的代碼 “始於顏值,陷於才華,終於人品”,你會被它的整體佈局所吸引,比如整齊的標點符號排列,整潔清晰的註釋····,你有了讀它的興趣,閱讀這樣的代碼是一種享受,當你去思考它的內容時,你又會爲它內清晰精妙的邏輯設計而讚歎和驚豔,最後當你讀完它後,細細回味,發現它的整體結構佈局是如此的合理和精巧,那些理所當然的地方原來蘊藏着那麼多的思考和智慧。
最後送給大家和我一句評判代碼質量的方法 : 別人看你代碼時所說罵的髒話的多少,就是代碼好壞的程度。 其實也不用別人,我們自己隔幾天再去看我們的代碼,罵的髒話都可以作爲參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章