|
|
1
17
我推荐一门基础课程 propositional logic 为每一个有抱负的程序员。起初,符号和希腊字母可能会让数学爱好者感到不快,但它确实是你技能集中最强大(并且经常被忽视)的工具之一,而且在核心部分非常简单。 这个 basic operators , de Morgan's 和 other basic laws , truth tables 和存在,例如 disjunctive 和 conjunctive normal forms 让我大开眼界。在我了解它们之前,条件表达式感觉像是危险的野兽。从那以后,我就知道,只要有必要,我可以用重炮来鞭打他们,使他们屈服! |
|
|
2
5
真理表基本上是一种详尽的方法,并且(有希望)强调所有的可能性。 你可能想看看 Microsoft Pex 这有助于发现你没想到的边缘病例。 |
|
|
3
4
我认为开发人员在询问如何在处理复杂的if代码时让他的生活更轻松。 我处理复杂的代码的方法是尽可能简单地编写代码,并首先清除所有否定项。如果你能把化合物的一部分放在上面,就可以去掉它。 简单的好处是不需要一本书或一门课来学习它。如果你能拆散它,就这么做。如果你能去掉它的任何部分,就这样做。如果你不明白,就换一种方式。扁平的几乎总是比嵌套的要好(多亏了python!). 阅读起来更简单:
而不是读:
|
|
|
4
3
真值表和单元测试-绘制这些表(n维表示n个变量),然后将它们用作单元测试的输入,单元测试可以测试每个变量组合并验证结果。 |
|
|
5
2
多年来,我在复杂的国际单项体育联合会中看到的最大问题是,人们不会测试所有的分支机构。确保为每个可能的分支编写一个测试,无论您看起来多么不可能命中它。 |
|
|
6
2
你也可以试试 Karnaugh maps ,最多可容纳4个变量。 |
|
|
7
1
如果你还没有,我强烈建议你阅读 Code Complete . 它对这样的主题有很多建议。我现在手头没有我的副本,否则我会把这一部分的摘要写在书上。 |
|
|
8
0
将逻辑分解为独立的单元(A&B等),每个单元都有自己的变量。然后使用您需要的逻辑构建这些。用适当的名称命名每个变量,这样您的复杂语句就相当可读(尽管它可能会占用多行额外的行和一些临时变量)。 |
|
|
9
0
你为什么不能用guard语句来处理逻辑呢? |
|
|
10
0
Karnaugh maps 可以是从真值表(由visage建议)中获取信息并将其转换为紧凑的和/或/或非表达式的好方法。这些通常在EE数字逻辑课程中教授。 |
|
|
11
0
你试过设计图案吗?您可以研究所谓的战略模式: http://en.wikipedia.org/wiki/Strategy_pattern |