在演示passalert函数的抽取的时候,有人提出了这样的意见:
“我更加喜欢所有和这个功能有关的代码放到一起。这样看起来一目了然,而且调试的时候不需要跳来跳去的”。
抽取函数后,一个函数等效于一个代码块。就是说一个代码块变成了一行语句,显然看一行比看一块代码更加一目了然吧。
至于调试的时候跳来跳去的,这是事实,如果可以不跳当然对调试来说更加方便。可是在TDD开发中,更加强调测试,少用调试。就是说,丢进去参数,看结果对不对,如果对了,就不说了;如果不对,那么因为经过重构的代码逻辑清晰,应该是只要静态看代码就可以解决问题;如果不能的话,那么需要继续重构。通过重构达到减少调试的目的。调试比较多的话,常常就是一个指标,说明代码的质量还是不够高。
显而易见的,往往并不合理。比如RAD技术,可以几下就通过可视化技术,绘制出界面来。可是这样的技术,还是少用为妙,因此RAD的画界面存在的代码难以重用,修改风格困难,界面风格不统一,无法批量调整的问题(比如把查询的按钮区统一从上方调整到下方,调整全部界面的背景色)。carpa平台的gaml,silverlight的xaml都是采用了静态设计的技术。有些产品也是在数据库内定义界面,而不是绘制出来。所以我的看法是:“RAD是给新手入门的,并不适合真正的商业项目开发”。
同样的,调试虽然是查找问题的利器,但是调试器常常存在运行缓慢的问题,并且常常需要一点点的观察变量的变化,数据库的修改,因此调试效率必定是非常低的。TDD的普及,提供了一个新的方法,就是通过输入参数,查看输出结果,并把这个过程批量化,自动化,从而获得效率的提升。实际上,主流的carpaxiwa的开发模式就是重视测试,轻视调试的。
即便如此,这个tx还是不太认可。我说,你用老的方法做了7-8年了吧,为什么不换换思路?不妨试试看吧。
分享到:
相关推荐
内联函数的编程风格是将关键字 `inline` 与函数定义体放在一起,而不是仅将其放在函数声明前面。例如: ```cpp void Foo(int x, int y); // 错误的风格 inline void Foo(int x, int y) { /* ... */ } // 正确的风格...
2. 内联函数的定义应在头文件中:因为编译器需要看到函数的定义才能进行内联,所以通常内联函数的定义应与声明放在一起,通常在头文件中。 3. 不是所有的函数都适合内联:只有那些简单、短小的函数才适合内联,对于...
2. 内联函数的定义需要与声明一起放在头文件中,以便编译器在编译时能够找到并进行内联替换。 3. 内联函数可能会增加编译后可执行文件的大小,因为它在多个地方被复制。 虚函数则是实现动态多态性的一种方式。当一...
2) 将函数与其他已完成的函数一起放入另一个文件中,这种方式可以分离功能模块,使代码结构更清晰。 3) 将函数放入函数库中,便于复用和管理。函数库分为静态库和动态库,静态库在编译时会被合并到目标代码中,而...
按照题目要求,我们应将类的声明放在`rect.h`文件中,成员函数的定义放在`rect.cpp`文件中,而`main`函数则放在`test1.cpp`中。这种组织结构有助于代码的模块化管理,使大型项目更加易于维护。 ### 四、实验结果与...
在编程中,函数是一组一起执行任务的语句。它们帮助我们组织代码,使其更易于编写、阅读和维护。在这篇C语言经典函数讲解的文章中,我们将会了解函数的基本概念、函数的定义、函数的调用过程、函数的返回值以及两个...
它通常与`SetWindowsHookEx`等API函数一起使用。 ```cpp LRESULT CALLBACK MyHookProc(int nCode, WPARAM wParam, LPARAM lParam) { // 钩子函数的具体实现 } ``` #### 五、回调函数的应用示例 1. **事件...
- `mysql_server_init()`:在程序启动时调用,通常放在 `main()` 函数中。 - `mysql_server_end()`:在程序结束前调用。 - `mysql_thread_init()` 和 `mysql_thread_end()`:分别在每个访问 MySQL 的线程开始和...
函数声明则是告诉编译器函数的存在,通常放在函数实际定义之前,以便在调用函数前编译器能正确处理。 2. **函数参数**:函数可以接受输入数据,这些数据通过参数传递。参数是在函数定义时声明的,调用时传入相应的...
多函数程序可以将不同功能的代码分别放在不同的函数中,这些函数可以相互调用,形成程序的逻辑结构。每个C程序至少有一个`main`函数,作为程序的入口点。函数可以保存在多个源文件中,分别编译后链接在一起。 函数...
首先,处理函数的方式有三种:1) 将函数放在main()函数所在的同一文件中;2) 将函数与其他已完成的函数一起放入单独的文件;3) 将函数放入函数库。每种方法都有其适用场景。小型项目中,可能直接在主文件中包含所有...
精简的API函数查询工具,本人用了一段时间,要查询的函数都可以查出; 注意:由于文件超过上传上限,故分成了两卷上传,把两卷放在一起,解压其中一个文件即可!
但三角比却是一个例外,无论是边长还是面积,它总是和那些具体问题联系在一起,在土地测量等实际作业中被频繁应用。于是,作者把三角比放在《三角函数超入门》的第一部分里。在第二部分“三角函数”中,有很多非常...
通过“Mina、Netty、Twisted一起学(九):异步IO和回调函数.docx”,我们可以深入了解Twisted的异步I/O机制和回调函数的使用。 这些文档还涵盖了特定主题,如“Mina、Netty、Twisted一起学(三):TCP消息固定大小...
- **参数预设**:可以预设一部分参数给被绑定的函数,当新函数被调用时,预设的参数会放在传入的参数前。 #### bind方法的实现要点: - **返回新函数**:bind方法需要返回一个新的函数实例,这个新函数在调用时,...
`main`函数可以和其他非主函数(用户自定义函数)一起使用,但程序执行总是从`main`开始。因此,正确答案是B)由一个且仅由一个主函数和零个以上的非主函数构成。 2. **函数执行顺序**:C语言规定,程序执行始于`...
此外,由于题目描述中提到的"文件夹下的函数是相互关联的,要放在一起使用",这可能意味着除了`readsac`函数之外,还有其他辅助函数配合处理SAC数据。这些函数可能包括用于数据预处理、特征提取、可视化等功能的脚本...
这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复),而且,由于编译器会把调用函数的代码和函数本身放在一起优化,所以也有进一步优化代码的可能。如果你把一
// inline 仅与函数声明放在一起 void Foo(int x, int y){} ``` 二、内联函数的作用 内联函数的主要作用是为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题。通过使用inline关键字,可以告知编译器将...