精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

五種編寫"自然"代碼的方法,讓每個人都愛不釋手

開發 前端
有時我們編寫代碼只是為了讓它能工作,而不關心向其他人展示我們在做什么。而這種做法往往會在日后造成痛苦的反噬。特別是當其中一個"其他人"是未來的自己時。

為什么我們使用JavaScript、Dart和Python等語言,而不是古老的匯編語言?

這是因為它們與自然語言更接近。

或者說,它們有可能更接近自然語言。

因為有時我們編寫代碼只是為了讓它能工作,而不關心向其他人展示我們在做什么。

而這種做法往往會在日后造成痛苦的反噬。特別是當其中一個"其他人"是未來的自己時。

1. 使用詞性命名

當你的代碼盡可能地像英語時,你就知道它是自然的。就像一個有趣、描述性的故事。

這意味著你已經智能地創造了故事中的實體和動作,以強有力地表達從開始到完成的代碼流程。

名詞

我們在談論哪些實體?

  • 變量
  • 屬性(getter和setter)
  • 類和對象
  • 模塊

每個角色都有一個名字,所以我們用表達力強的名詞和名詞短語來描述它們。

不要這樣:

// ? do-examples.ts
// ? 難以理解
const f = 'Coding';
const l = 'Beauty';

// ? Verb
// ? 動詞
const makeFullName = `${f} ${l}`;
class Book {
  // ? Adjectival phrase
  // ? 形容詞短語
  createdAt: Date;
}

而要這樣:

// ? examples.ts
// ? 可讀性高
const firstName = 'Coding';
const lastName = 'Beauty';

// ? Noun
// ? 名詞
const fullName = `${firstName} ${lastName}`;

class Book {
  // ? Noun phrase
  // ? 名詞短語
  dateCreated: Date;
}

動詞

你的代碼庫中有哪些動作?

  • 函數
  • 對象方法

動作意味著實體在做某事;命名它們的自然方式是使用描述性的動詞動詞短語

不要這樣:

class Product {
  constructor(name, price, quantity) {
    this.name = name;
    this.price = price;
    this.quantity = quantity;
  }

  // ? Noun
  // ? 名詞
  total() {
    return this.price * this.quantity;
  }
}

const product = new Product('Pineapple??', 5, 8);
console.log(product.total()); // 40

而要這樣:

class Product {
  constructor(name, price, quantity) {
    this.name = name;
    this.price = price;
    this.quantity = quantity;
  }

  // ? Verb
  // ? 動詞
  getTotal() {
    return this.price * this.quantity;
  }
}

const product = new Product('Banana??', 7, 7);
console.log(product.getTotal()); // 49

方法是用來某事的。屬性是用來擁有某物的。

所以更好的做法是:

class Product {
  constructor(name, price, quantity) {
    this.name = name;
    this.price = price;
    this.quantity = quantity;
  }

  get total() {
    return this.price * this.quantity;
  }
}

const product = new Product('Orange??', 7, 10);
console.log(product.total); // 70

副詞

記住,副詞用來告訴你更多關于名詞、動詞或另一個副詞的信息。

在JavaScript中,這是指任何接受函數并返回另一個函數的函數:一個高階函數。它們升級了函數。

所以與其這樣:

// ? 動詞
function silence(fn) {
  try {
    return fn();
  } catch (error) {
    return null;
  }
}

const getFileContents = (filePath) =>
  silence(() => fs.readFileSync(filePath, 'utf8'));

不如這樣更自然:

// ? 副詞
function silently({ fn }) { // or "withSilence"
  try {
    return fn();
  } catch (error) {
    return null;
  }
}

const getFileContents = (filePath) =>
  silently({ fn: () => fs.readFileSync(filePath, 'utf8') });

這就像在說"悄悄地獲取文件內容"。

2. 編寫自然的輸入

編碼和計算都是關于處理某些輸入以產生輸出。

在自然代碼中,處理是動作,而輸入+輸出是實體。

假設我們有一個計算矩形面積并將其乘以某個數量的函數。

你能看出這里的問題嗎?

const calculateArea = (length, width, height) => length * width * height;

const area = calculateArea(2, 5, 10); // 100

哪個參數是寬度和高度?哪個是乘數?

這段代碼讀起來不自然;在英語中,我們總是指定動作的對象。

如何修復這個問題?命名參數:

// 輸入是實體 - 名詞 ?
const area = calculateArea({ multiplier: 2, height: 5, width: 10 });

function calculateArea({ multiplier, height, width }) {
  return multiplier * height * width;
}

這樣更容易閱讀;我們立即就能理解我們在處理什么輸入。

即使只有1個參數,我也建議使用這種方式。

3. 編寫自然的輸出

我們在輸出上也可以同樣明確:

const { area } = calculateArea({
  multiplier: 2,
  height: 5,
  width: 10,
});

function calculateArea({ multiplier, height, width }) {
  return { area: multiplier * height * width };
}

這也允許我們之后輕松升級函數:

const { area, perimeter } = calculateArea({
  multiplier: 2,
  height: 5,
  width: 10,
});

console.log(area, perimeter); // 100 60

function calculateArea({ multiplier, height, width }) {
  return {
    area: multiplier * height * width,
    perimeter: (height + width) * 2 * multiplier,
  };
}

4. 避免魔法數字

編碼不是懸疑驚悚片!它是一篇描述性文章;盡可能地描述清楚。

而不是這種令人費解的混亂:

function c(a) {
  return a / 13490190;
}

const b = c(40075);

console.log(b); // 0.002970677210624906

在整個代碼庫的大背景下,所有這些數字和變量意味著什么?它們告訴我們——人類——什么?

什么也沒告訴我們。實體和動作的名稱要么不存在,要么質量很差。

這就像告訴你的朋友:

是的,我去了這個地方,然后做了這件事,之后我做了某事去了另一個地方,并做了某事,120!

這毫無意義。

自然代碼描述一切。為實體使用優雅的名詞,為動作使用出色的動詞。

const speedstersSpeedKmPerHr = 13490190;
const earthCircumferenceKm = 40075;

function calculateSpeedstersTime(distance) {
  return distance / speedstersSpeedKmPerHr;
}

const time = calculateSpeedstersTime(earthCircumferenceKm);

console.log(time); // 0.002970677210624906 ~ 11s

現在你說了些有意義的話。

是的,我去了餐廳,吃了一個雞肉三明治,然后我開車去了健身房,做了二頭肌卷舉,120磅!

5. 創建"無用"變量

在自然代碼中,變量不再僅僅用于在這里那里存儲值。

它們也是解釋你在做什么的工具:

這就是為什么我們不這樣做:

if (
  !user.isBanned &&
  user.pricing === 'premium' &&
  user.isSubscribedTo(channel)
) {
  console.log('Playing video...');
}

而是這樣做:

const canUserWatchVideo = 
  !user.isBanned &&
  user.pricing === 'premium' &&
  user.isSubscribedTo(channel);

if (canUserWatchVideo) {
  console.log('Playing video...');
}

我們只會使用這個變量一次,但這并不重要。它不是一個功能性變量,而是一個裝飾性變量;一個自然變量。

最后的思考

代碼是為你的同伴人類編寫的,而不僅僅是為編譯器。

一個不懂編程的人能理解你的代碼中發生了什么嗎?

毫無疑問,這是一個強有力的指導性問題,可以讓你的代碼盡可能地易讀和自然。

責任編輯:姜華 來源: 大遷世界
相關推薦

2011-09-16 09:06:20

Smalltalk

2021-01-18 09:55:46

Spring代碼Java

2021-01-24 11:55:40

spring升華代碼的技巧開發

2010-12-08 09:59:10

CSS

2021-04-13 10:07:08

Python軟件包編程語言

2021-04-25 10:15:38

Python編程語言軟件包

2021-01-20 06:29:42

JS工具操作符

2011-03-31 14:22:28

Chrome插件

2009-08-29 08:41:07

Windows 7新功能

2024-12-17 15:00:00

Python代碼

2011-05-12 09:12:16

Ubuntu 11.0

2017-05-24 18:00:13

AndroidAndroid DatView

2021-01-11 08:21:34

spring升華代碼的技巧開發

2021-02-02 21:42:30

VS Code編輯器開發

2021-12-09 13:30:17

微軟

2013-05-06 22:52:10

智能手機交互方式用戶體驗

2016-05-05 10:54:53

Android開發應用

2023-07-04 08:19:25

IDEA插件

2020-11-03 15:10:55

Spring Batc框架Java

2011-04-19 09:08:09

web工具項目管理
點贊
收藏

51CTO技術棧公眾號

嫩草伊人久久精品少妇av杨幂| 国产免费黄色片| 中文有码一区| 欧美日韩免费高清一区色橹橹| 亚洲在线色站| 亚洲国产福利视频| 香蕉久久夜色精品| 最新中文字幕亚洲| 无码人妻久久一区二区三区蜜桃| 96av在线| 日本一区二区三区国色天香| 亚洲一区二区三区在线视频| 日本三级2019| 91影院成人| 亚洲国产成人精品女人久久久 | 高清在线观看av| 韩国v欧美v亚洲v日本v| 97超级碰碰人国产在线观看| 在线小视频你懂的| 都市激情亚洲| 91精品国产综合久久久久久 | 日韩欧美在线网站| 成熟老妇女视频| 四季久久免费一区二区三区四区| 久久久噜噜噜久久人人看 | 欧美高清在线播放| 天堂网av2018| 中日韩免视频上线全都免费| 日韩精品一区二区三区视频在线观看| 国产视频一区二区视频| 欧美理论片在线播放| 国产精品视频观看| 欧美极品jizzhd欧美| 国产视频一区二区三| 奇米色777欧美一区二区| 91高清视频在线免费观看| 人人澡人人澡人人看| 欧美女优在线视频| 亚洲第一区在线| 日本成人在线免费观看| 久久久久黄色| 色爱区综合激月婷婷| 免费看毛片的网址| 尤物在线网址| 亚洲欧洲国产日韩| 日韩电影免费观看在| 午夜国产在线视频| 丁香激情综合国产| 成人片在线免费看| va婷婷在线免费观看| 久久99国产精品久久99果冻传媒| 国产精品jizz在线观看麻豆| 日韩精品在线免费视频| 99热这里只有成人精品国产| 欧美日韩成人精品| 精品小视频在线观看| 亚洲精品一区二区妖精| 中文字幕日韩精品在线观看| 小早川怜子久久精品中文字幕| 好吊妞视频这里有精品 | 69久久精品无码一区二区| 涩涩涩久久久成人精品| 欧美日韩免费高清一区色橹橹| 自拍偷拍21p| 亚洲三级在线| 欧美一级电影网站| 日本少妇xxxx软件| 成人搞黄视频| 日韩电影中文字幕在线| 亚洲专区区免费| 国产亚洲欧美日韩在线观看一区二区| 亚洲视频一区二区三区| 91成人精品一区二区| 色135综合网| 久久成人精品电影| 久久精品www| 亚洲片区在线| 国产成人综合精品| 亚洲天堂男人网| 国产一区二区三区在线观看精品| 99九九视频| 天堂在线中文字幕| 久久综合成人精品亚洲另类欧美| 欧美中日韩免费视频| a天堂中文在线| 亚洲女人****多毛耸耸8| 隔壁人妻偷人bd中字| 日韩电影免费看| 欧美伊人久久大香线蕉综合69 | 高清在线不卡av| 成人免费看片网址| 秋霞视频一区二区| 国产无一区二区| 好吊色这里只有精品| www.超碰在线| 欧美系列一区二区| 性感美女一区二区三区| 美女毛片一区二区三区四区| 久久精品电影一区二区| 日韩精品一区二区不卡| 欧美96一区二区免费视频| 亚洲一区美女视频在线观看免费| 少妇高潮一区二区三区69| 久久午夜老司机| 九九久久九九久久| 另类激情视频| 欧美不卡一区二区三区四区| 亚洲精品国产一区黑色丝袜| 你懂的成人av| 国产成人精品在线| 欧美少妇bbw| 国产精品久久影院| 女性女同性aⅴ免费观女性恋| 视频欧美精品| 亚洲色图综合久久| 国产亚洲精品久久久久久无几年桃 | 福利电影一区二区| 亚洲人成网站在线播放2019| 免费v片在线观看| 在线不卡中文字幕播放| a毛片毛片av永久免费| 欧美成人亚洲| 国产精品视频导航| 国产精品毛片一区二区三区四区| 天涯成人国产亚洲精品一区av| 色戒在线免费观看| 欧美裸体在线版观看完整版| 4k岛国日韩精品**专区| 成人午夜精品福利免费| 亚洲另类在线视频| 第一区免费在线观看| 成久久久网站| 日本成人激情视频| 午夜av免费在线观看| 亚洲二区在线视频| 蜜桃色一区二区三区| 91精品99| 91嫩草在线视频| 国产在线观看a| 欧美精品1区2区| 免费黄色国产视频| 美女免费视频一区二区| 日韩av一区二区三区美女毛片| 中文字幕一区久| 日韩精品在线视频| 男人日女人网站| 97精品国产97久久久久久久久久久久 | 午夜精品在线看| 国产sm在线观看| 亚洲区小说区| 海角国产乱辈乱精品视频| 91亚洲国产成人久久精品麻豆| 久久九九久精品国产免费直播| 久久久免费视频网站| 国产乱论精品| 久久国产精品久久精品| 国产乱淫a∨片免费观看| 国产精品嫩草99a| 狠狠热免费视频| 国产最新精品| 国产精品视频免费在线| 97在线观看免费观看高清 | 亚洲精品视频免费| 亚洲男人第一av| 久久精品亚洲乱码伦伦中文| 欧美视频在线播放一区| 亚洲三级性片| 国产精国产精品| 九色在线免费| 日本精品视频一区二区三区| 伊人网在线视频观看| 日精品一区二区| 相泽南亚洲一区二区在线播放| 成人不卡视频| 日韩一区二区精品视频| 91成品人影院| 亚洲天堂a在线| 欧美色图校园春色| 在线日韩av| 精选一区二区三区四区五区| 天堂8中文在线最新版在线| 国产一区二区动漫| 中文字幕人妻色偷偷久久| 国产精品视频免费看| 亚洲网中文字幕| 国语自产精品视频在线看8查询8| 国产精品久久久久久久小唯西川| 国产探花视频在线观看| 日韩av网址在线观看| 亚洲天堂一区在线| 欧美国产亚洲另类动漫| 爱豆国产剧免费观看大全剧苏畅| 激情自拍一区| 欧洲精品码一区二区三区免费看| 992tv国产精品成人影院| 日韩中文字幕视频| 黑人操亚洲女人| 欧美日韩精品国产| 国产又黄又粗的视频| 国产尤物一区二区| 青娱乐自拍偷拍| 国产精品嫩草影院在线看| 成人免费视频视频在| 不卡av播放| 色偷偷综合社区| 成人毛片视频免费看| 在线亚洲精品福利网址导航| 久久国产精品波多野结衣av| 91麻豆精东视频| 日本黄色的视频| 最新日韩在线| 亚洲精品久久区二区三区蜜桃臀| 果冻天美麻豆一区二区国产| 国产精品日韩精品| xxxcom在线观看| 中文字幕久精品免费视频| 污污网站在线免费观看| 欧美美女bb生活片| 国产精品第9页| 中文字幕一区在线观看| 亚洲熟女乱综合一区二区三区| 国模无码大尺度一区二区三区| 色欲av无码一区二区人妻| 国产精品传媒精东影业在线| 久久精品国产第一区二区三区最新章节 | 色图在线观看| 亚洲人成网站777色婷婷| 国产视频在线一区| 欧美精品日韩精品| 天天干天天色综合| 亚洲国产毛片aaaaa无费看| 阿v天堂2014| 久久婷婷成人综合色| 日本一区二区免费视频| 久久爱www久久做| 精品久久久久久无码国产| 午夜精品999| wwwjizzjizzcom| 日韩在线高清| 日韩一区不卡| 偷窥自拍亚洲色图精选| 精品日本一区二区三区| 五月亚洲婷婷| 成人亚洲激情网| 蜜桃视频无码区在线观看| 国产精品大片| 自拍偷拍一区二区三区| 老司机aⅴ在线精品导航| 精品91免费| swag国产精品一区二区| 91精品中文在线| 玖玖精品在线| 91麻豆桃色免费看| 日本中文字幕视频一区| 国产成人精品视频在线观看| 性欧美freesex顶级少妇| 欧美高清视频一区二区| 岛国av在线网站| 久久久噜噜噜久噜久久| 手机电影在线观看| 久久91精品国产91久久跳| 黑人极品ⅴideos精品欧美棵| 欧美裸体男粗大视频在线观看| 美女隐私在线观看| 久久精品视频播放| 日本精品一区二区三区在线播放| 国产一区二区三区在线看| 三级毛片在线免费看| 亚洲成人av片| 草草视频在线播放| 亚洲精品国产精品乱码不99按摩| 内射无码专区久久亚洲| 日韩电影第一页| 深夜福利在线看| 亚洲精品资源美女情侣酒店| 色播色播色播色播色播在线| 日韩成人小视频| 欧美成人综合在线| 亚洲精品小视频在线观看| 在线激情免费视频| 久久综合久久八八| 羞羞视频在线免费国产| 久久6免费高清热精品| 爱情电影社保片一区| 国产成人精品免高潮费视频| 久久不卡日韩美女| 99超碰麻豆| 激情五月综合网| 伊人色综合久久天天五月婷| 正在播放日韩欧美一页 | 久久久免费观看视频| 成人影院在线观看| 午夜精品久久17c| 麻豆免费在线| 国产精品尤物福利片在线观看| 婷婷成人av| 黑人另类av| 国产精品97| 久久黄色片视频| 麻豆中文一区二区| 制服.丝袜.亚洲.中文.综合懂| 国产欧美日产一区| 久久久国产精品黄毛片| 欧美性猛交xxxx免费看| 亚洲专区在线播放| 国产丝袜高跟一区| 麻豆传媒视频在线| 97精品国产97久久久久久免费 | 亚洲成人福利片| 中文字幕在线播放av| 日韩欧美国产wwwww| 男人天堂资源在线| 成年人精品视频| 97精品国产综合久久久动漫日韩 | 男女视频免费看| 欧美情侣在线播放| 三级黄视频在线观看| 日韩在线观看免费全| gogo高清在线播放免费| 国产裸体写真av一区二区 | 久久久久久久久久久久久久一区| 欧美理论视频| 福利视频一区二区三区四区| 青青草一区二区三区| 亚洲午夜久久久久久久久| 国产精品情趣视频| 国产性生活视频| 精品国产一区二区精华| av影片免费在线观看| 777午夜精品福利在线观看| av在线亚洲色图| 亚洲美女自拍偷拍| 日韩精品福利网| 人妻换人妻仑乱| 亚洲欧美日韩在线播放| 中文字幕在线天堂| 亚洲国产天堂久久国产91| 国产在线看片| 7777精品久久久大香线蕉小说| 欧美色图在线播放| 国产精品宾馆在线精品酒店| 成人激情综合网站| 男人与禽猛交狂配| 欧美蜜桃一区二区三区| 国产永久免费高清在线观看视频| 欧美专区中文字幕| 加勒比视频一区| a级片一区二区| 黄网站免费久久| 国产黄色片在线免费观看| 欧美日韩的一区二区| 国产一二在线观看| 国产精品久久久久久久久久东京| 在线成人动漫av| 麻豆av免费在线| 久久久蜜桃精品| 进去里视频在线观看| 中文字幕不卡av| 日韩av电影资源网| 亚洲国产精品一区二区第四页av| 久久亚洲图片| 制服 丝袜 综合 日韩 欧美| 91精品福利视频| 137大胆人体在线观看| 国产欧美久久久久久| 精品国产视频| 天天爽夜夜爽视频| 亚洲一区二区视频在线观看| 懂色av一区二区三区四区| 日韩中文字幕在线看| 国语精品视频| 在线观看污视频| 福利电影一区二区三区| 欧美亚洲精品天堂| 亚洲一级免费视频| 黄色成人小视频| 成人污网站在线观看| 风流少妇一区二区| 青青草成人av| 国产视频精品一区二区三区| 欧美日韩尤物久久| 99精品视频网站| 国产成人午夜精品5599| 国产精品999在线观看| 亚洲色图13p| 日韩一级视频| 亚洲欧美一二三| 国产成人免费视频精品含羞草妖精| 精品深夜av无码一区二区老年| 日韩午夜在线观看视频| 欧美日韩大片| 伊人狠狠色丁香综合尤物| 国产精品一级在线| 99超碰在线观看| 久久精品这里热有精品| 2020最新国产精品| 国产超碰在线播放| 一区二区三区四区精品在线视频| 天堂在线资源8| 91视频免费网站|