热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

规范的函数应该如何编写

每个函数指完成单一的功能。单一功能的函数容易理解,容易测试,也容易预测其行为。给已输入,就能知道其输出。在设计的时候,将函数分为:查询和命令。查询函数:仅仅查询对象的状态,而不改变对象的状态。命令函数:只修改对象的状态,而不返回对象的状态。

每个函数指完成单一的功能。单一功能的函数容易理解,容易测试,也容易预测其行为。给已输入,就能知道其输出。

在设计的时候,将函数分为:查询和命令。

  • 查询函数:仅仅查询对象的状态,而不改变对象的状态。比如dist_length.指返回双向链表的长度。
  • 命令函数:只修改对象的状态,而不返回对象的状态。比如:dist_delete只删除链表的结点,并返回其操作是否成功,而不返回当前的长度或者结点是否存在。

查询分为:基本查询和复合查询。

  • 基本查询:只查对象的单一状态。
  • 复合查询:可以查询对象的多个状态。

比如:window_get_width()或者窗口的宽度,window_get_rect()获得窗口的左上角,宽度和高度。

在实现的时候,检验输入数据,确认使用者正确的调用了函数。契约式设计,规定了调用者和实现者,双方的责任。

检查你的函数

  • 关注语法错误,代码排版和变量命名。
  • 关注常见的编译错误,比如内存泄露,和可能的越界访问。变量没有初始化,函数没有返回值,没有判断函数返回值。
  • 模拟计算机执行。看执行结束是否和预期一样。
  • 自己先给自己讲一遍程序的实现流程。看流程是否自己能理解。

需要检查那些错误

  • 内存泄露
  • 内存访问越界
  • 野指针
  • 访问空指针
  • 引用未初始化的变量
  • 不清楚指针运算
  • 初始化结构引发的错误
  • 结构大小引起的变化
  • 分配和释放不匹配
  • 返回指向临时变量的指针
  • 试图修改常量全局变量和字符串
  • 误解传值和引用
  • 符号重名
  • 栈溢出
  • 误用sizeof
  • 字节对齐
  • 字节顺序
  • 多线程共享变量没有用volitile修饰
  • 忘记函数的返回值

本文地址:http://www.nowamagic.net/librarys/veda/detail/486,欢迎访问原出处。


推荐阅读
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了如何在PHP中实现基于概率的随机抽奖功能。通过实例代码,解释了抽奖逻辑、奖品设置及结果统计的方法。适合PHP开发者参考学习。 ... [详细]
  • 本文对宋代词人朱雍的《迷神引》进行翻译和赏析,深入探讨其词作的艺术特色与情感表达。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • 小编给大家分享一下如何移除URL中的index.php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • 本文详细介绍了如何在PHP中删除数组中的指定元素、第一个元素和最后一个元素,并提供了具体的代码示例和相关函数的使用说明。 ... [详细]
author-avatar
angela-gugupb_269
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有