函数设计—参数规则

news/2025/1/17 14:44:10/

【规则1-1】参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。 如果函数没有参数,则用 void 填充。 例如:

void SetValue(int width, int height); // 良好的风格 
void SetValue(int, int);			  // 不良的风格
float GetValue(void); 				  // 良好的风格
float GetValue();					  // 不良的风格

【规则1-2】参数命名要恰当,顺序要合理。

例如编写字符串拷贝函数 StringCopy,它有两个参数。如果把参数名字起为 str1str2,例如

 void StringCopy(char *str1, char *str2);

那么我们很难搞清楚究竟是把 str1 拷贝到 str2 中,还是刚好倒过来。 可以把参数名字起得更有意义,如叫 strSourcestrDestination。这样从名字上就可以看出应该把 strSource 拷贝到 strDestination

还有一个问题,这两个参数那一个该在前那一个该在后?参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。 如果将函数声明为:

void StringCopy(char *strSource, char *strDestination);

别人在使用时可能会不假思索地写成如下形式:

char str[20]; 
StringCopy(str, “Hello World”); // 参数顺序颠倒

【规则1-3】如果参数是指针,且仅作输入用,则应在类型前加 const,以防止该 指针在函数体内被意外修改。 例如:

void StringCopy(char *strDestination,const char *strSource);

【规则1-4】如果输入参数以值传递的方式传递对象,则宜改用“const &”方式 来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。


【建议1-1】避免函数有太多的参数,参数个数尽量控制在 5 个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
【建议1-2】尽量不要使用类型和数目不确定的参数。

C 标准库函数 printf 是采用不确定参数的典型代表,其原型为:

 int printf(const chat *format[, argument]⋯);

这种风格的函数在编译时丧失了严格的类型安全检查


http://www.ppmy.cn/news/37811.html

相关文章

Android 9.0系统源码_窗口管理(三)WindowManagerService对窗口的管理过程

前言 上一篇我们具体分析了WindowManager的addView方法添加窗口的过程,我们知道WindowManager最终会调用到WindowManagerService的addWindow方法。本篇文章我们将在此基础上,具体来分析WindowManagerService的addWindow方法添加窗口的过程。这个方法的代…

selenium和Firefox的安装配置

selenium和firefox的安装配置1.1、Firefox的安装1.2、Firefox驱动geckodriver的安装1.3、geckodriver环境配置两种方式1.3.1、直接添加1.3.2、手动配置1.4、python安装selenium库两种方式1.4.1、使用pip命令进行安装1.4.2、Pycharm当中安装1.1、Firefox的安装 这之前我们先安装…

最新前端面试知识点总结-2023(3w+字,长篇幅)

2023-前端面试知识点总结面试题总览javascript相关一、js 代码的常用优化手段二、es5 构造函数与继承三、new 一个对象的过程四、防抖与节流五、promise/A规范概述六、实现一个柯里函数封装七、事件队列八、微任务是哪些宏任务是哪些九、执行js代码时,同步任务、微任…

Kafka + Canal + MySQL 集群部署

目录 1、什么是Canal? canal产生的背景: canal工作原理主要是利用了mysql的主从复制原理: canal工作原理: 实验环境: 实验目的: 2、mysql的安装部署 mysql下载路径: 开启二进制日志 配置…

Python 自动化指南(繁琐工作自动化)第二版:十七、计时、安排任务和启动程序

原文:https://automatetheboringstuff.com/2e/chapter17/ 坐在电脑前运行程序是没问题的,但让程序在没有你直接监督的情况下运行也很有用。您计算机的时钟可以安排程序在某个指定的时间和日期或定期运行代码。例如,你的程序可以每小时抓取一个…

MATLAB 求解定积分和不定积分

本文主要介绍如何通过matlab 去求解常见的定积分和不定积分的结果,使用matlab 内置函数 int。 语法: Fint(表达式,变量,变量上下限) 目录 例子1 单变量不定积分 例子2 多变量不定积分 例子3 单变量定积分 例子4 定积分近似求…

Linux SSH失效的几种情况以及排查方法

公司有个项目是用三台Linux服务器的,在第一台服务器上使用shell脚本同时部署至三台服务器 突然最近有个生产环境SSH不好用了,经过仔细排查才得以解决 SSH可能会在以下情况下失效: 1. SSH服务未启动 检查SSH服务是否启动:system…

【项目】Java API站内搜索引擎

1.项目目标2.项目过程2.1预处理2.2构建索引2.2.1正排索引查询添加2.2.2倒排索引查询添加2.2.3保存到本地2.2.4从本地加载索引2.2.5性能优化多线程解决线程安全问题首次制作索引比较慢缓存2.3搜索模块2.3.1划分关键词加载索引、停用词分词2.3.2触发文档2.3.3权重排序权重合并降序…