概述

我相信理解好的编程概念会提高程序员的水平。
好的概念不依赖于特定的编程语言,并且在许多编程语言中都很有用。
这次要介绍的一个好概念是“OAOO 原则”。

什么是 OAOO 原则?

OAOO 代表“Once And Only Once”,可以概括为“不要一遍又一遍地编写相同的代码”。
当您在多个地方看到类似的代码(重复代码)时,最好考虑将其放在一个地方。
如果您遵循 OAOO 原则并且您的代码需要更改,您只需在一处更改即可。
“重复代码”是编程中最常见的事情之一(如复制和粘贴代码),但它也是您能做的最糟糕的事情。

有 DRY 原则(Don't Repeat Yourself),但 DRY 原则经常作为一个整体系统使用。
由于本文的范围是编程,我将把它作为一个 OAOO 原则来介绍。

示例代码

我们将查看重复代码的示例代码和出现的示例以及如何删除它们。

1. 将幻数定义为常数

幻数是写在代码上的“具有某种意义的特定数字”。
幻数有以下问题。
・数字的含义难以理解(当相同的数字有不同的含义时很难判断)
・如果需要更改代码,则需要更改多个地方

使用幻数的代码如下。

ampm_not_oaoo.js
// 1:午前, 2:午後
if (ampm === 1) {
    // 午前の処理
} else if (ampm === 2) {
    // 午後の処理
} else {
    // その他の処理
}

// ...
if (ampm === 1) {
    // 午前だけの特別な処理
}

// 午前とは違う意味の「1」です
count += 1;

将幻数定义为常量的代码如下。

ampm_oaoo.js
// 1:午前
const AM = 1;
// 2:午後
const PM = 2;
// 1:増加数
const Increment = 1;

if (ampm === AM) {
    // 午前の処理
} else if (ampm === PM) {
    // 午後の処理
} else {
    // その他の処理
}

// ...
if (ampm === AM) {
    // 午前だけの特別な処理
}

// 午前と違うことを判断できる
count += Increment;

通过将幻数定义为常数,现在可以确定数字的含义。

2.将同一个进程定义为一个函数

如果您有执行相同操作的代码,请将该代码定义为函数。
我认为没有一个程序员以前没有定义过函数,但让我们花点时间来回顾一下它的好处。

没有函数定义的代码如下。

function_not_oaoo.js
// pre => main => postの順番で実行(1回目)
preProcessing();
mainProcessing();
postProcessing();

// ...

// pre => main => postの順番で実行(2回目)
preProcessing();
mainProcessing();
postProcessing();

函数定义的代码如下。

function_oaoo.js
// pre => main => postの順番で実行
function doProcessing() {
    preProcessing();
    mainProcessing();
    postProcessing();
}

// 処理実行(1回目)
doProcessing();

// ...

// 処理実行(2回目)
doProcessing();

将相同的过程定义为函数具有以下优点。
・使用定义的函数可以多次执行相同的过程
・如果需要更改代码,只需更改函数中的处理即可

概括

这一次,我介绍了 OAOO 原理。
根据 OAOO 原则消除“重复代码”具有以下优点:
・如果代码需要更改,只有一个地方可以更改。
- 提高代码可读性

编程中的各种概念和技术
毫不夸张地说,我们的存在是为了实现 OAOO 原则,我们认为这是一个重要的概念。
如果你能理解 OAOO 原理,感觉程序员的水平提高了,我将不胜感激。

感谢您阅读到最后。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308630813.html

相关文章: