是否有可能通过括号防止死亡?

Pet*_*son 6 language-agnostic parentheses

偶尔,我会用比我喜欢的更多括号编写一些代码.

 if(!(new Day((((new Date()) / millisecondsPerDay) % 75)) instanceof oldDay))) { 
    // Bonus points if that condition made any sense to you
 }
Run Code Online (Sandbox Code Playgroud)

很难跟踪我需要放多少个括号,特别是当我没有使用IDE时会立即告诉我何时出错.事实上,我敢打赌上面的例子与括号正确匹配.我已经被括号中的死亡错误所困扰,而不是我想承认.

我想知道是否有办法绕过这个.我可以使用哪些技术来避免用这么多括号包装东西?

是否有任何语言具有防止需要这么多括号的机制?例如,我想添加自动关闭括号的特殊字符和自动打开它们的特殊字符可能有所帮助.(<>在下面的例子中)

if(!(new Day<new Date()) / millisecondsPerDay) % 75> instanceof oldDay>
Run Code Online (Sandbox Code Playgroud)

Bla*_*ack 9

一种可行的替代方法是在条件循环之前预先计算带括号的值.以您的代码为例:

if(!(new Day((((new Date()) / millisecondsPerDay) % 75)) instanceof oldDay))) { 
    // Bonus points if that condition made any sense to you
 }
Run Code Online (Sandbox Code Playgroud)

让我们开始分手吧.

Date d1 = new Date();
var factor1 = (d1 / millisecondsPerDay ) % 75;
Day day1 = new Day (factor1);

if (!day1 instanceof oldDay) {
// do something
}
Run Code Online (Sandbox Code Playgroud)

请记住,代码是为人类编写的,只有在之后才能执行.如果你发现了巨大的条件,那么就开始对它们进行预处理并将其分解.如果需要一秒多的时间才能弄清楚你的状况是什么,那么它可能太长了.

  • 对于大多数现代编译器以及它们在幕后进行的优化,难以阅读的版本和易于阅读的版本都编译成相同的执行代码.编写代码并考虑后续代码. (4认同)