加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

重构的艺术:五个小妙招助你写出好代码!

发布时间:2019-11-05 16:53:38 所属栏目:建站 来源:读芯术
导读:糟糕的代码可以运作,但迟早会让我们支付价钱。你有没有碰着过这样的题目:几周后,你无法领略本身的代码,于是不得不花上几个小时,乃至几天的时刻来弄清晰到底产生了什么。 办理这个常见题目的要领是使代码尽也许清楚。假如做得更好的话,纵然长短技强人

那么,怎样停止一再代码呢?这有点难,可是将逻辑提取到函数/变量凡是结果很好。让我们看看下面的代码,我在重构应用措施时看到了这些代码:

  1. function getJavascriptNews() { 
  2.     const allNews = getNewsFromWeb(); 
  3.     const news = []; 
  4.   
  5.     for (let i = allNews.length - 1; i >= 0; i--){ 
  6.         if (allNews[i].type === "javascript") { 
  7.             news.push(allNews[i]); 
  8.         } 
  9.     } 
  10.   
  11.     return news; 
  12.   
  13. function getRustNews() { 
  14.     const allNews = getNewsFromWeb(); 
  15.     const news = []; 
  16.   
  17.     for (let i = allNews.length - 1; i >= 0; i--){ 
  18.         if (allNews[i].type === "rust") { 
  19.             news.push(allNews[i]); 
  20.         } 
  21.     } 
  22.   
  23.     return news; 
  24.  
  25. function getGolangNews() { 
  26.   const news = []; 
  27.   const allNews = getNewsFromWeb(); 
  28.  
  29.   for (let i = allNews.length - 1; i >= 0; i--) { 
  30.     if (allNews[i].type === 'golang') { 
  31.       news.push(allNews[i]); 
  32.     } 
  33.   } 
  34.  
  35.   return news; 

一再代码示例

你也许已经留意到for轮回在这两个函数中完全沟通,除了一个小细节:我们想要的消息范例,即javascript或rust消息。为了停止这种一再,可以将for轮回提取到一个函数中,然后从getJavascriptNews,getRustNews和getGolangNews 函数挪用该函数。以下是详细操纵要领:

  1. function getJavascriptNews() { 
  2.   const allNews = getNewsFromWeb(); 
  3.   return getNewsContent(allNews, 'javascript'); 
  4.  
  5. function getRustNews() { 
  6.   const allNews = getNewsFromWeb(); 
  7.   return getNewsContent(allNews, 'rust'); 
  8.  
  9. function getGolangNews() { 
  10.   const allNews = getNewsFromWeb(); 
  11.   return getNewsContent(allNews, 'golang'); 
  12.  
  13. function getNewsContent(newsList, type) { 
  14.   const news = []; 
  15.   for (let i = newsList.length - 1; i >= 0; i--) { 
  16.     if (newsList[i].type === type) { 
  17.       news.push(newsList[i].content); 
  18.     } 
  19.   } 
  20.   return news; 

在将for轮回提取到getNewsContent函数中之后,getJavaScriptNews, getRustNews和getGolangNews函数酿成了简朴、清楚的措施。

(1) 进一步重构

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读