我正在为一个简单的加密练习编写Ruby代码,并且经常遇到这个难题(如果您必须知道的话,该练习是单人密码)。这是一个问题,我是否应该使用使函数可读的描述性变量和单步语句来填充我的逻辑,而不是使用简洁,密集的语句来消除重复和/或最大程度地减少错误的机会,从而填充我的逻辑。
我最近的例子:我的程序接受输入,并且由于严格的格式准则,它可以轻松确定输入是否应该加密或解密。为简化起见,一旦加密密钥和消息被转换/生成为兼容,就可以从加密消息中减去密钥,或者将密钥添加到未加密消息中,以获得所需的输出(将密钥视为加密,消息+加密=代码;代码-加密=消息)。DRY位置告诉我,我应将加密的消息与未加密的消息进行不同的转换,这样就无需区分使用加密密钥并将其应用于消息的功能。我发现这意味着我需要在函数中嵌套一些if语句,但逻辑似乎很牢固。但是,此代码不容易阅读。
另一方面,我可以编写两个不同的函数,这些函数根据应用程序确定加密或解密时设置的标志来调用。这将更易于阅读,但会复制将加密密钥应用于消息的高级功能(导致对其进行加密或解密)。
我应该倾向于可读代码还是简洁代码?还是我错过了获得此功能并满足这两个原则的另一种方法?这是一个必须考虑项目目的并做出最佳决策以达到该目的的规模吗?
到目前为止,相对于可读代码,我倾向于强调简洁的DRY代码。