CC2e 术语:把 routine 译为“子程序”的理由

news/2023/12/9 15:26:29

   

  这里特别说明一下在《Code Complete(代码大全) 第二版》中我们把 routine 译为“子程序”的理由。(主要观点来自裘宗燕老师,部分文字取自裘老师写给我们的邮件。)

  这本书先讲整体的设计(第 5 章);而后讲 class(第 6 章),是下降一个层次;而后讲 routine(第 7 章)。在第 7 章“High-Quality Routines”的一开始,作者自设一问:

What is a “routine”? A routine is an individual method or procedure invocable for a single purpose. Examples include a function in C++, a method in Java,a function or sub procedure in Microsoft Visual Basic. For some uses, macros in C andC++ can also be thought of as routines. You can apply many of the techniques for creatinga high-quality routine to these variants.

非正式译文:何谓“routine”?routine 是具有单一目的、能单独调用的一段代码(method 或 procedure)。例如,C++ 中的函数 (function),Java 中的 method,Microsoft Visual Basic 中的 function 或 sub。某些情况下,C/C++ 中的宏 (macro) 也可以认为是 routine。

  可见作者口中的 routine 就是一段有名称、能调用的代码,可能有参数、也可能没有参数,可能有返回值、也可能没有返回值,实际指就是 subroutine(subroutine 是比较正式的说法)。如果这是一本针对 C/C++ 语言的书,那么作者多半会用“function/函数”这个词。而 CC2e 是一本针对一般软件开发的书,并非针对特定语言,作者一直非常谨慎地回避 function 这个词(一般只作“功能”讲)。如果细分起来,function 是有返回值的 routine,procedure(过程)是没有返回值的 routine,method 是作为 class 的成员的 routine,甚至 C++ 中重载了的运算符也算是 routine。

  书中也有讲函数的地方,讲的就是函数的返回值问题(函数的特殊问题),也有讲 method 的地方,讲的就是 method 的特殊问题。因此 routine 的译文应该能涵盖函数、过程、method 。这样想来,恐怕很难找到比“子程序”更好的词了。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=557608



http://www.niftyadmin.cn/n/3660022.html

相关文章

CC2e 术语:construction 译成“构建”还是“构筑”?

construction 恐怕是《Code Complete(代码大全) 第二版》这本书里惟一值得讨论的术语。construction 本意是“建筑、建筑物”。在这本书里用来指软件开发过程中最主要的一项活动,软件开发的活动包括:问题定义、架构、需求、设计、…

seata1.3.0 系列学习(一、seata1.3.0 安装)

下载seata 此处选用目前最新版本1.3.0 解压完成后 注:seata官方从1.0版本后不再提供sql脚本,以及nacos推送配置脚本,需要从0.9.0的版本复制 将红色框框的四个文件复制到1.3.0/conf目录下 执行db_store.sql脚本,数据库名为seata 修改file.conf文件 将mode"db…

seata1.3.0 系列学习(二、nacos+seata使用)

上篇文章讲了如何安装seata,这篇文章主要讲如何使用&#xff0c;分布讲解什么情况回滚&#xff0c;不回滚 一、新建父级maven pom.xml文件导入 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0…

seata1.3.0 系列学习(三、nacos+seata使用,多次请求问题解决)

上篇文章讲到&#xff0c;使用过程中发现&#xff0c;第二个微服务的请求会出现多次问题&#xff0c;为了验证此问题跟seata无关&#xff0c;我又添加了第三个服务 并且把seata相关代码注释 目前接口 A->B->C 发起请求&#xff0c;查看数据库&#xff0c;发现问题依然存…

WPF 使用自定义控件(custom control),资源字典(ResourceDictionary),用户控件(user control),及之间的对比

最近使用WPF比较多&#xff0c;过来记录一下&#xff0c;对比一下 个人理解usercontrol比较适用于组合控件&#xff08;比如你想要实现的控件是由多个控件组成的&#xff09;&#xff0c;customCcontrol主要是用来单独重绘控件&#xff0c;如button,datagrid&#xff0c;lable…

MySQL之Explain 应用于sql性能调优

一、Explain基本概念 1. Explain定义 我们知道MySQL中有一个查询优化器Query Optimizer&#xff0c;它的作用是找到最小代价的正确执行方案&#xff1b; EXPLAIN :模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知道Mysql是如何处理你的SQL语句的&#xff0c;分…

CC2e 术语:一些基本确定的术语

《Code Complete&#xff08;代码大全&#xff09; 第二版》中译本使用下面这些术语我想不会引起多大争议&#xff08;完全不会有争议的术语&#xff0c;如“variable/变量、program/程序、class/类”等等就不列出了&#xff09;&#xff1a;agile development - 敏捷&#xff…

C++ ifstream open 读取txt文件出现中文乱码的解决方法

由于编解码的问题&#xff0c;txt读写会出现中文乱码&#xff0c;打开txt文件&#xff0c;点另存为&#xff0c;可看到编码方式有&#xff1a; 编码方式为UTF-8时&#xff0c;会出现中文乱码。 将编码方式换为ANSI时&#xff0c;问题解决。

关于__declspec(dllimport)的理解

一、基本概念 _declspec(dllexport)与_declspec(dllimport)都是DLL内的关键字&#xff0c;即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。 主要区别在于&#xff1a;dllexport是在这些类、函数以 及数据的申明的时候使用。用过表明这些东西可以被外部函…

MFC创建窗口流程

一个MFC程序框架 1、应用程序类 CWinApp 2、框架类 CFrameWnd 流程&#xff1a; 1、有且仅有一个全局的应用程序类对象 MyApp myApp; 2、在程序入口函数实现 InitInstance() 1)、给框架类对象动态分配空间&#xff08;自动调用它的构造函数) 框架类MyFrame对象构造函数里创…

WindowsAPI 程序

#include <windows.h> #include <stdio.h> HINSTANCE hinst; /* 函数声明 */ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int); LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); // 功能显示一个窗口 int WINAPI WinMain(HINSTANCE…

Winform实现ComboBox模糊查询

1、新增项目 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplica…

vs2012 nuget 基础连接已经关闭:发送时发生错误

在vs2012中用nuget联机安装其他dll包时&#xff0c;出现“基础连接已经关闭:发送时发生错误”。 https://nuget.org/api/v2/改成https://nuget.org/api/v2/还是不行 然后 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.…

TortoiseGit 学习笔记(克隆、提交、推送、拉取等)

一 、从远程库克隆Clone 右键->选择Git clone.会跳出界面&#xff0c;需要你粘贴刚才你在远端复制的url地址 这样就clone成功 二、 拉取pull和获取fetch pull 从远程拉取最新版本 到本地 自动合并 merge fetch 从远程获取最新版本 到本地 不会自动合并 merge 虚线表…

WPF性能优化经验总结

原文地址&#xff1a;WPF性能优化经验总结 - 痴鸟 - 博客园 WPF性能优化一、Rendering Tier 1. 根据硬件配置的不同&#xff0c;WPF采用不同的Rendering Tier做渲染。下列情况请特别注意&#xff0c;因为在这些情况下&#xff0c;即使是处于Rendering Tier 2的情况下也不会硬…

LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档

LaTeX 没有像 Word 那样自带中文字数统计功能&#xff0c;加上 LaTeX 源文件中有许多控制字符&#xff0c;不能通过文件大小获知其中有多少汉字。为此我用C写了一个统计中文字数的小工具&#xff0c;名为 cwc &#xff0c;即 chinese word counter。这个程序只有 count_files()…
最新文章