|
那么,怎样停止一再代码呢?这有点难,可是将逻辑提取到函数/变量凡是结果很好。让我们看看下面的代码,我在重构应用措施时看到了这些代码:
- function getJavascriptNews() {
- const allNews = getNewsFromWeb();
- const news = [];
-
- for (let i = allNews.length - 1; i >= 0; i--){
- if (allNews[i].type === "javascript") {
- news.push(allNews[i]);
- }
- }
-
- return news;
- }
-
- function getRustNews() {
- const allNews = getNewsFromWeb();
- const news = [];
-
- for (let i = allNews.length - 1; i >= 0; i--){
- if (allNews[i].type === "rust") {
- news.push(allNews[i]);
- }
- }
-
- return news;
- }
-
- function getGolangNews() {
- const news = [];
- const allNews = getNewsFromWeb();
-
- for (let i = allNews.length - 1; i >= 0; i--) {
- if (allNews[i].type === 'golang') {
- news.push(allNews[i]);
- }
- }
-
- return news;
- }
一再代码示例
你也许已经留意到for轮回在这两个函数中完全沟通,除了一个小细节:我们想要的消息范例,即javascript或rust消息。为了停止这种一再,可以将for轮回提取到一个函数中,然后从getJavascriptNews,getRustNews和getGolangNews 函数挪用该函数。以下是详细操纵要领:
- function getJavascriptNews() {
- const allNews = getNewsFromWeb();
- return getNewsContent(allNews, 'javascript');
- }
-
- function getRustNews() {
- const allNews = getNewsFromWeb();
- return getNewsContent(allNews, 'rust');
- }
-
- function getGolangNews() {
- const allNews = getNewsFromWeb();
- return getNewsContent(allNews, 'golang');
- }
-
- function getNewsContent(newsList, type) {
- const news = [];
- for (let i = newsList.length - 1; i >= 0; i--) {
- if (newsList[i].type === type) {
- news.push(newsList[i].content);
- }
- }
- return news;
- }
在将for轮回提取到getNewsContent函数中之后,getJavaScriptNews, getRustNews和getGolangNews函数酿成了简朴、清楚的措施。
(1) 进一步重构 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|