精品欧美一区二区三区在线观看 _久久久久国色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无码| 2019av中文字幕| 女性隐私黄www网站视频| 高清av在线| 另类小说欧美激情| 两个人的视频www国产精品| 国产吃瓜黑料一区二区| 在线视频cao| 亚洲国产精品激情在线观看| 成人免费网站在线观看| 国产乡下妇女做爰毛片| re久久精品视频| 欧美日韩一级视频| 久久亚洲精品无码va白人极品| 青青免费在线视频| 国内精品久久久久影院色| 久久久噜噜噜久久久| 日本网站在线免费观看| 亚洲精品白浆高清| 欧美人狂配大交3d怪物一区| 国产成人在线小视频| 国产在线自天天| 成人听书哪个软件好| 日本一区二区不卡| 久久国产在线视频| 欧美特黄一级大片| 亚洲精品国产拍免费91在线| 久久99爱视频| 欧美大胆a人体大胆做受| 亚洲视频一区在线| 欧洲精品在线一区| 性色av蜜臀av| 麻豆国产一区二区| 欧美一级在线亚洲天堂| 黄色一级免费视频| 日韩欧美午夜| 亚洲一区二区久久久| 久久久久久久久久影视| 亚洲热av色在线播放| 色综合天天视频在线观看| 少妇一晚三次一区二区三区| 美女隐私在线观看| 国产肉丝袜一区二区| 韩国一区二区三区美女美女秀| 97人妻一区二区精品免费视频| 日日嗨av一区二区三区四区| 91精品国产乱码久久久久久蜜臀| 欧美黑人一级片| 中文精品久久| 久久九九热免费视频| 欧美性猛交xxxx乱大交少妇| 国产亚洲一卡2卡3卡4卡新区| 亚洲第一区在线| 91超薄肉色丝袜交足高跟凉鞋| 国产精品xnxxcom| 欧美日韩一区二区三区在线看 | 美女在线视频一区二区| 欧美特大特白屁股xxxx| 色综合色狠狠天天综合色| 国产精品网站免费| 毛片在线网站| 狠狠做深爱婷婷久久综合一区 | 中文字幕在线观看成人| 911精品美国片911久久久 | fc2ppv在线播放| 久久一本综合| 久久久91精品国产| 精国产品一区二区三区a片| 午夜国产一区二区| 欧美老少配视频| 国产精久久久久久| 国产欧美日韩一级| 国产成人精品优优av| 久久久久精彩视频| 看国产成人h片视频| 91久久久精品| 亚洲乱码在线观看| 94色蜜桃网一区二区三区| 久久久久久国产精品一区 | 久久久精品免费观看| 日韩av免费电影| 蜜桃视频在线观看www社区 | 国产精品videossex国产高清 | 青春草在线观看| 亚洲国产成人午夜在线一区| 性欧美18一19内谢| 成人超碰在线| 色综合激情久久| 夜夜夜夜夜夜操| 国产成人高清精品免费5388| 亚洲老头老太hd| 中文字幕91视频| 韩国欧美一区| 国产成人精品午夜| 亚洲精品97久久中文字幕无码| 99热在这里有精品免费| 午夜精品视频在线观看一区二区| v天堂福利视频在线观看| 午夜国产精品影院在线观看| 8x8x最新地址| 香蕉大人久久国产成人av| 亚洲精品一区中文字幕乱码| 国产精品视频看看| 亚洲精品影视| 国产日韩欧美在线| 午夜一区在线观看| 亚洲精品成人悠悠色影视| www.com毛片| 高清在线一区二区| 亚洲人成在线免费观看| 欧美黑人一级片| 免费在线成人网| 国产精品一区二区三区不卡 | 国产精品国产三级国产aⅴ中文| 日韩免费在线观看av| 国产麻豆久久| 日韩精品福利在线| 成人免费毛片东京热| 三级精品在线观看| 国产区欧美区日韩区| 欧美激情视频在线播放| 丁香五六月婷婷久久激情| 性高潮久久久久久| 日韩激情在线| 日本午夜人人精品| 色一情一乱一乱一区91av| 成人欧美一区二区三区视频网页| 欧美视频在线播放一区| 亚洲网一区二区三区| 日韩视频欧美视频| 波多野结衣二区三区| 99精品久久99久久久久| 无码人妻精品一区二区蜜桃网站| 狂野欧美性猛交xxxx| 亚洲欧美日韩一区在线| 国产一级视频在线播放| 国产在线播放一区| 一区二区三区不卡在线| 久久久成人av毛片免费观看| 亚洲乱码国产乱码精品精天堂 | 老司机免费在线视频| 在线日韩av片| 亚洲天堂视频一区| 免费看黄裸体一级大秀欧美| 精品福利影视| rebdb初裸写真在线观看| 欧美成人伊人久久综合网| www深夜成人a√在线| 乱一区二区av| 影音欧美亚洲| 96sao精品免费视频观看| 综合久久五月天| 中文字幕乱码在线观看| 欧美国产国产综合| 最新天堂在线视频| 国产精品不卡| 91中文在线视频| 91一区二区三区在线| 日韩一区二区免费在线电影 | 欧美精品18| 9a蜜桃久久久久久免费| 第四色日韩影片| 精品视频久久久久久久| 中文字幕高清在线免费播放| 久久精品一区二区三区av| 成人中文字幕av| 成人羞羞视频播放网站| 成人精品一区二区三区电影黑人 | 极品美女一区二区三区| 国产精品久久99久久| 在线看黄色av| 欧美一区二区三区免费观看视频| 黄色一级视频在线观看| bt7086福利一区国产| 久久精品99国产| 久久人人88| 超碰97国产在线| 日韩伦理在线一区| 在线中文字幕日韩| 亚洲成人一级片| 福利视频导航一区| 国产在线免费av| 国产精品亚洲午夜一区二区三区 | 日本不卡视频一二三区| 欧美 日韩 国产 在线观看| 91精品啪在线观看国产爱臀| 欧美一级黑人aaaaaaa做受| 99re在线视频| 精品国产三级电影在线观看| 潘金莲一级淫片aaaaaa播放| 17c精品麻豆一区二区免费| 亚洲自拍偷拍精品| 免费在线观看一区二区三区| 成人av在线不卡| 欧美在线电影| 国产伦精品一区二区三区视频黑人 | 午夜啪啪小视频| 亚洲电影成人| 亚洲一区精彩视频| 精品综合久久88少妇激情| 国产精品久久久久久久app| 性xxxfreexxxx性欧美| 亚洲免费伊人电影在线观看av| 亚洲天天综合网| 亚洲第一综合色| 激情五月激情综合| 95精品视频在线| 日日夜夜精品视频免费观看| 一二三区精品| 欧美交换配乱吟粗大25p| 国产a久久精品一区二区三区| 91文字幕巨乱亚洲香蕉| 欧美大片1688网站| 午夜精品三级视频福利| 日本视频在线| 亚洲欧美日韩精品| 亚洲国产日韩在线观看| 欧美日韩另类一区| 丁香六月婷婷综合| 亚洲精品国产一区二区精华液| 久久久无码人妻精品一区| 国产成人在线影院 | 日日夜夜亚洲| 日韩av手机在线观看| 123区在线| 欧美人与性动交| 国产视频一区二区| 亚洲新中文字幕| 欧美成人综合在线| 亚洲第一区在线观看| www.蜜臀av.com| 欧美二区乱c少妇| 中文字幕乱伦视频| 色婷婷激情久久| 国产成人愉拍精品久久| 亚洲综合色婷婷| 1024手机在线视频| 成人免费在线播放视频| 欧美人与禽zoz0善交| 亚洲国产电影在线观看| 日本爱爱爱视频| 国产亚洲成aⅴ人片在线观看| 51调教丨国产调教视频| 99久久精品国产精品久久| 精品1卡二卡三卡四卡老狼| 国产成人精品一区二 | 99久久99久久久精品齐齐| 人妻激情偷乱频一区二区三区| 国产成人在线视频播放| 亚洲欧洲国产视频| 成人免费高清在线| 白嫩情侣偷拍呻吟刺激| 成人丝袜高跟foot| 91视频啊啊啊| 久久久99免费| 国产极品视频在线观看| 国产精品嫩草影院com| 最新日韩免费视频| 自拍偷在线精品自拍偷无码专区| 三级在线观看免费大全| 亚洲免费在线看| 中文字幕影音先锋| 亚洲综合色网站| 你懂的国产视频| 色综合视频在线观看| 中文在线最新版天堂| 欧美区在线观看| 国产乱叫456在线| 精品少妇一区二区三区在线播放 | 91专区在线观看| 久久香蕉精品| 欧美性受xxxxxx黑人xyx性爽| 国产在线精品一区二区不卡了| 91av免费观看| www.亚洲在线| 欧美激情亚洲色图| 亚洲欧洲国产专区| 国产精品18p| 日韩欧美大尺度| 一级全黄裸体免费视频| 欧美成人一区二区三区| 视频二区在线| 色噜噜狠狠狠综合曰曰曰| 深夜国产在线播放| 奇米四色中文综合久久| 亚洲伦理久久| 精品国产乱码久久久久久蜜柚| 国产一区99| 中文字幕第50页| 新67194成人永久网站| 九九九九九国产| 99久久精品国产一区| 91禁男男在线观看| 亚洲成人一二三| 亚洲一区二区激情| 日韩成人在线视频观看| 欧洲不卡av| 欧美一级视频免费在线观看| 国产精品白丝久久av网站| 久久久精品动漫| 欧美福利视频| 五月婷婷之综合激情| 成人精品国产一区二区4080| 天天操天天干天天操天天干| 亚洲已满18点击进入久久| 一二三区免费视频| 日韩欧美的一区| 91美女视频在线| 97在线视频一区| 免费看日产一区二区三区| 欧美中日韩免费视频| 伊人久久亚洲影院| 日韩成人av免费| 国产视频一区二区在线| 日日夜夜综合网| 精品人伦一区二区色婷婷| 网友自拍视频在线| 国产不卡视频在线| 久久午夜影院| 国产激情片在线观看| 裸体一区二区三区| 免费成人深夜天涯网站| 日韩欧美亚洲成人| 日本黄色免费视频| 操91在线视频| 日韩国产大片| 亚洲欧美国产精品桃花| 久久99伊人| 免费中文字幕av| 午夜不卡在线视频| 狠狠综合久久av一区二区| 麻豆乱码国产一区二区三区| 韩日精品一区| 午夜欧美性电影| 日韩av一二三| 第一次破处视频| 日本韩国欧美一区二区三区| 婷婷av一区二区三区| 国模私拍一区二区三区| 国产成人福利av| 九色自拍视频在线观看| 成人v精品蜜桃久久一区| 欧美日韩亚洲国产另类| 日韩欧美一区在线| 天天干在线视频论坛| 亚洲专区国产精品| 午夜日韩在线| 无码人妻丰满熟妇区毛片蜜桃精品| 亚洲欧美另类在线| 国产三级漂亮女教师| 蜜臀久久99精品久久久久久宅男 | 欧美激情精品久久久久久免费 | 亚洲在线免费播放| 精品人妻无码一区二区色欲产成人| 麻豆成人在线看| 伊人久久噜噜噜躁狠狠躁| 国产成人在线小视频| 成人av中文字幕| 特一级黄色大片| 亚洲美女av在线播放| 在线成人视屏| 亚洲综合第一| 国产高清精品网站| 国产污视频在线看| 日韩精品视频在线播放| 日韩电影大全网站| 亚洲精品白虎| 国产一区二区日韩精品| 久久久久亚洲av片无码下载蜜桃 | 国产h在线观看| 91久久国产综合久久91精品网站| 欧美伊人久久| 国产三级国产精品| 欧美三级中文字| 在线观看中文字幕的网站| 精品国产乱码久久久久久丨区2区| 午夜在线精品偷拍| 国精品人伦一区二区三区蜜桃| 欧美一区二区三区男人的天堂 | 国产精品视频男人的天堂| 91精品观看| 国产夫妻性爱视频| 欧美乱熟臀69xxxxxx| 牛牛电影国产一区二区| 欧美成人一区二区在线| 久久99精品久久久久久| 免费毛片一区二区三区| 在线播放国产一区中文字幕剧情欧美| 粉嫩av国产一区二区三区| 久久99久久99精品| 国产欧美精品区一区二区三区 | 成人av片在线观看| 人人妻人人爽人人澡人人精品| 久久综合久久八八| 杨幂一区二区三区免费看视频| 国产精品探花在线播放| 日韩欧美在线看| 日本在线观看高清完整版| 婷婷精品国产一区二区三区日韩| 国产成人免费视频网站高清观看视频|