成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么我要豎向對齊程序代碼,你也應該這樣做

開發 后端
最近在HackerNews上Linux內核編碼風格的討論非常熱鬧。討論的進行中,我的一個回復觸發了另外一場關于是否應該豎向對齊代碼的口水仗。我堅持我的觀點!下面讓我來解釋一下為什么要豎向對齊。

最近在HackerNews上Linux內核編碼風格討論非常熱鬧。

討論的進行中,我的一個回復觸發了另外一場關于是否應該豎向對齊代碼的口水仗。我堅持我的觀點!下面讓我來解釋一下為什么要豎向對齊。

為什么要豎向對齊代碼?

舉一個簡單的例子:

  1. int robert_age = 32
  2. int annalouise_age = 25
  3. int bob_age = 250
  4. int dorothy_age = 56

相較而言,下面的寫法更易讀:

  1. int robert_age     = 32
  2. int annalouise_age = 25
  3. int bob_age        = 250
  4. int dorothy_age    = 56

只要用眼睛一掃,我們就能發現”bob_age”數字異常。我可以去輕松的識別這些變量都是數字,不需要拿眼睛一個個對比。

這種編碼風格并不是被廣泛接受。所以,我需要解釋一些這種風格的好處。

代碼的可讀性

90%的編程活動是為了解決問題。另外90%是用來理解代碼是如何解決問題的。

閱讀代碼跟閱讀小說沒多大區別。我們希望作者能把他的想法寫明白,不需要陳詞濫調長篇累牘,但同時要遵守所使用的語言的語法。

事實上,Linux內核編碼風格里十分強調這一點。你給變量的命名同它的作用同等重要。

看一下下面的這段代碼:

  1. var thinG=doIt(thestuff,MORE_sTuff); /* LOL! */ 

就算你是十分解這段代碼,你讀起它來也十分費勁。

  1. var totalBill = apply_tax(initialBill, taxRate); 

通過給予變量有意義的命名,空格,大小寫區分,我們能讓這段代碼更清晰。這意味著接手我們的代碼的下一位程序員能更容易的理解它。

為什么要使用Monospace字體?

關于代碼編輯器應該使用monospace字體還是proportional字體的爭論,從未停息也不會停息,兩派人各有所好。

有些異教徒會告訴你proportional 字體***的——忽略這些人吧。

最終是為可讀性。什么方法能最簡單的幫助我們理解代碼?所以IDE才會有代碼高亮配色,這樣你就能輕松的分辨“foo”究竟是一個函數,是一個變量,是一個常量,還是一個注釋。只要是能幫助我們理解代碼的東西都是好東西!

編輯器的問題

有趣的是,我遇到的很多批評的聲音不是說代碼豎向對齊的好壞,而是批評我的代碼編輯器不行。

你這樣做會破壞使用diff對比版本差異時的可讀性和有效性。比如,本來只是一行是有一個變量有bug,你能為了對齊變量改動了很多行,影響了查看關鍵修改處。也有能夠忽略空格的diff技術,但至少你這樣做得不償失。
Andreas van Cranenburgh

…還有…

假如說,你有50行代碼要豎向對齊,你把所有的值對對齊距離最遠的那一行,而增加一個更大距離的行,你需要修改50行。我就遇到過這樣的問題,最終發現這樣做是錯誤的。
scrollaway

他們說的是對的——在某些情況下。但關鍵是他們不會使用更好工具。

我記得Elastic Tabstops提供的一個技巧——如何自動對齊代碼塊:

columnblocks_coloured

正確的工具能輕松的完成這樣的任務。計算機就是用來為我們干這些枯燥、重復的事情的-CPU的工作很廉價,我們可以“浪費”CPU的工作來讓我們的代碼更清晰可讀。

Linux 內核代碼中還有大量例子能說明豎向對齊代碼能讓代碼更適合人類閱讀。

豎向對齊代碼并不是在所有情況下都適用——但對于大多數情況,它的好處是大大的。

代碼是我們表達我們的思想的媒介。如果你的工具使得理解這些思想更困難,那說明工具需要改變,而不是我們。

 

責任編輯:張偉 來源: 程序師
相關推薦

2015-05-20 14:01:27

程序程序會做飯

2010-10-09 09:20:08

.NET

2012-06-18 14:51:09

Python

2023-02-03 17:25:31

自動化代碼審查開發

2019-12-04 09:05:15

千萬級流量高并發

2018-05-23 00:20:29

2009-05-26 09:00:59

ScalaJava面向對象

2020-05-15 15:28:51

爬蟲Python學習

2017-10-25 09:50:51

Linux

2024-10-18 11:55:47

2022-05-16 09:27:37

UbuntuUbuntu LTS

2015-08-24 10:51:00

全棧

2015-08-25 09:57:18

程序員全棧工程師

2021-01-22 05:55:12

GitAngularJStype

2022-06-30 08:03:13

Prisma數據庫工具開源

2015-07-28 14:22:09

BAT

2013-09-22 09:55:23

碼農程序員

2020-06-05 14:09:42

Kubernetes容器應用程序

2021-06-16 09:10:29

APP開發AndroidiOS

2012-04-11 09:19:08

Haskell編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合狠狠综合久久 | 欧美精品一区二区在线观看 | 国产一区二区在线免费观看 | 你懂的av| 欧美一级在线观看 | 成人欧美一区二区 | 国产美女一区二区三区 | 国产精品久久久久aaaa樱花 | 神马久久av| 一区二区三区久久 | 国产精品久久久久久久久久软件 | 人人射人人 | 在线看av的网址 | 天天干天天玩天天操 | 国产精品特级毛片一区二区三区 | 97久久精品 | 欧美精品一区二区三区在线 | 精品在线看| 成人福利在线观看 | 超级碰在线 | 欧美另类视频在线 | 亚洲国产一区二区三区四区 | 精品一区二区三区在线观看 | 99久久电影 | 91精品入口蜜桃 | 免费a在线 | 亚洲第一色站 | 国产欧美视频一区二区 | 国产成都精品91一区二区三 | 欧美黄色大片在线观看 | 日韩一区在线播放 | 亚洲国产成人在线视频 | 国产一极毛片 | 国产乱码精品一区二区三区忘忧草 | 久草网址| 久久精品国产久精国产 | 亚洲大片在线观看 | 91激情电影| 欧美视频一级 | 91影院在线观看 | 日韩一|