这些年来,我看到过大量的反编程模式。我感觉应该向大家分享一些。
今天,我要介绍的是被我称作反for-if编程模式的反模式「如果感兴趣可以查看一下这篇文章:for 循环为何可恨?」,也就是人们所说的”我们卖给你整个座位,但你需要的只是一个边。”
这是一个特殊的反for-case模式,其中所有的情况中只有一次会是null。
for (int i = 0; i < 100; i++) {
if (i == 42) { do_something(i); }
}
这种情况可以简单的写成
do_something(42);
这个反for-if模式可以表现成各种各样的形式。比如:
foreach (string filename in Directory.GetFiles("."))
{
if (filename.Equals("desktop.ini", StringComparison.OrdinalIgnoreCase))
{
return new StreamReader(filename);
}
}
它是在一个目录里遍历查找一个指定文件,如果找到了,就返回文件的数据流。这段代码的一种不是那么折腾的写法是
if (File.Exists("desktop.ini"))
{
return new StreamReader("desktop.ini");
}
请注意,两个版本的代码片段具有相同的竞争条件:如果这个desktop.ini本来是存在的,但在你创建StreamReader之前被删掉了, 你就会得到一个FileNotFoundException错误。
再举一个例子:
foreach (object o in hashtable.Keys)
{
if (o == "target") return hashtable["target"];
}
等同于
return hashtable["target"];
我猜测这些家伙不喜欢在图书馆里通过书名找一本书,因为他们的做法是如此的繁琐:
他们来到图书馆里员面前说,“把你所有的书都给我,”然后他们拿着装满了上千本书的篮子,坐到墙角里自言自语:
“不是,这本书的书名不对”,
“不是,这本也不是”,
“标题还是不对。”
“这本书呢?”
”不是,也不是这本。“
”老天,我要这样一本一本翻到什么时候…“
分享到:
相关推荐
1. **基础语法**:介绍Delphi语言的基本语法结构,如变量声明、常量定义、运算符、流程控制语句(如if、for、while)、函数和过程等。 2. **面向对象编程**:讲解类、对象、继承、多态、封装等核心概念,以及如何在...
控制结构如if条件语句、for循环和while循环用于根据条件执行不同的代码块。函数则是封装常用操作的代码段,便于复用。输入/输出重定向使得脚本可以读取文件内容、写入输出或者将错误信息导向指定位置。 ...
首先,书中详细介绍了C#语言的基础知识,包括变量、数据类型、控制结构(如if语句、for循环、while循环)、函数和类等基本概念。这些是所有C#编程的基石,读者需要牢固掌握,以便后续学习更复杂的主题。 其次,书中...
1. **基础语法**:Kotlin的基础语法包括变量声明(var和val)、数据类型(如Int、Double、Boolean等)、字符串模板、控制流(if-else、when表达式、for循环、while循环)以及函数和属性的定义。此外,Kotlin还有着...
1. **基础语法**:Python的基础语法包括变量声明、数据类型(如整型、浮点型、字符串、布尔型、列表、元组、字典、集合等)、流程控制(if-else、for、while循环)、函数定义和调用、类与对象(面向对象编程)。...
1. **C++基础**:C++的基础包括变量、数据类型、运算符、流程控制(如if-else、for、while循环)、函数等。了解这些基本概念是编写任何程序的基础。 2. **面向对象编程**:C++的核心特性之一是面向对象编程,包括类...
- if-else语句用于条件判断,for、while和do-while循环处理重复任务。 - 使用switch-case结构进行多条件判断,提高代码清晰度。 3. **方法与函数**: - 方法是代码的重用单元,通过参数传递数据,返回结果。 - ...
- 分支语句:涉及if、if/else、switch等控制流程语句。 - 循环语句:涵盖while、do/while、for循环,以及break、continue的用法和嵌套循环。 3. **结构体和数组** - 结构体:介绍复合数据类型,数据抽象和嵌套...
默认情况下,程序页面为文本编辑模式,允许用户在子程序、FB(功能块)和FC(功能)中自由选择使用ST或梯形图编程。 2. **ST子程序创建** - 在梯形图工程中插入ST子程序:打开一个梯形图工程,右键点击程序页,...
列表结构则是shell编程中用来控制脚本执行流程的手段,比如if、for、while等语句。数组则是shell中一种用来存储多个值的数据结构。 在调试、选项、陷阱和脚本编程风格等杂项方面,作者提供了调试技巧、命令行选项、...
Basic语言的语法结构与自然语言相似,比如"FOR-NEXT"循环、"IF-THEN-ELSE"条件判断等,使得程序逻辑清晰,学习曲线相对较平缓。此外,Bascom AVR还提供了许多内建函数,可以直接操作硬件资源,如I/O口、定时器、中断...
蓝桥杯STEMA考试是针对学生编程能力的一项重要评估,尤其对初级选手而言,C++编程是必修的技能之一。通过这次专题训练,考生可以提升自己的编程逻辑和问题解决能力。以下是对四道C++编程题目的详细解析: 1. **编程...
3. **控制结构**: 控制程序流程的关键在于条件语句(如if-else)和循环结构(如for、while)。手册会解释如何使用这些结构进行条件判断和重复执行代码。 4. **函数**: 函数是代码重用和模块化设计的关键。手册会...
- 控制流语句:如条件语句(if-else)、循环(for, while, foreach)和跳转语句(break, continue)。 - 函数和方法:学习如何定义和调用函数,以及参数传递机制。 - 类和对象:深入理解面向对象编程的基本概念,...
现代C++函数编程模式是C++11及后续版本引入的一种增强编程范式的特性,它使得C++在传统的面向对象编程之外,增加了函数式编程的能力。这种编程风格强调使用不可变数据、高阶函数和惰性计算,尤其适用于处理多线程...
Perl是一种强大的、高级的脚本编程语言,常用于文本处理、系统管理、网络编程和Web开发等领域。在Perl的世界里,"Magic Perl"可能是指它的一些独特特性和强大的功能,这些特性使得Perl对于初学者来说既有趣又富有...
在C#.NET编程中,我们首先要理解的是基础语法,包括变量、数据类型、控制流(如if语句、for循环、while循环)、函数等。这些是编写任何程序的基础。同时,C#支持类和对象的概念,这是面向对象编程的核心,使得代码...
- 控制流程:涉及if语句、switch语句、for循环、while循环和do-while循环等。 - 函数与方法:了解如何定义、调用函数以及参数传递机制。 - 类与对象:理解面向对象编程的基本概念,如封装、继承和多态。 - 异常...
此外,Vue.js提供了丰富的指令系统,如v-if、v-for、v-bind和v-on等,它们使得我们可以更加便捷地处理条件渲染、循环、属性绑定和事件监听。在医院管理系统中,比如在显示病历时,可以使用v-if指令控制显示已出院或...
- 条件语句可以嵌套使用,文件中的if嵌套在for循环内部,用来判断月度存款后进行特定操作。 4. 累加器模式(累加变量): - 在编程中,累加器是一种常见的模式,用于逐步累加数据值。在津津的储蓄计划和药房管理...