当前位置: 首页 > news >正文

高质量的子程序

高质量的子程序

子程序说明
创建子程序的理由降低复杂度
引入中间的、易懂的抽象
避免代码重复
支持子类化
隐藏顺序
隐藏指针操作
提高可移植性
简化复杂的布尔判断
改善性能
创建类的理由也是创建子程序的理由隔离复杂度
隐藏实现细节
限制变化带来的影响
隐藏全局数据
形成中央控制点
促成可重用代码
达到特定的重构目的
功能的内聚性最强最好的一种内聚性
一个子程序仅执行一项操作
不够理想的内聚性顺序上的内聚性
通信上内聚性
临时的内聚性
不可取的内聚性过程上的内聚性
逻辑上的内聚性:事件处理器
巧合地内聚性
好的子程序名字描述子程序所做的的所有事情
避免使用无意义的、模糊或表述不清的动词
不要仅通过数字来形成不同的子程序的命名
根据需要确定子程序名字的长度
给函数命名时要对返回值有所描述:cos()
给过程起名时使用语气强烈的动词加宾语的形式:PrintDocment()
准确使用对仗词
为常用操作确立命名规则
常见的对仗词add/remove increment/decrement open/close
begin/end insert/delete show/hide
create/destroy lock/unlock source/target
first/last min/max start/stop
get/put next/previous up/down
get/set old/new
子程序可以写多长50-150行代码
如何使用子程序参数按照输入-修改-输出的顺序排队参数
几个子程序使用类似的参数,排列保持一致
把状态或出货变量放在最后
不要把子程序的参数当作工作变量
对参数的假定尽心说明:单位、范围、特殊值等
参数个数限制在7个以内
对参数采用某种表述输入、修改、输出的命名规则:i_、m_、o_前缀
为子程序传递用以维持其接口抽象的变量或对象
使用具名参数
确保实际参数与形式参数相匹配
宏子程序把宏表达式整个包含在括号内
把含有多条语句的宏用大括号括起来
用给子程序命名的方法来给展开后代码形同子程序的宏命名,以便在需要时用子程序来替换宏,但这种做法具有风险

相关文章:

  • 软件测试时Java面试题
  • 业务提前初始化执行
  • 区块链——Hyperledger Fabric2.2单点搭建网络
  • 从零开发一款图片编辑器Mitu-Dooring
  • 2022-08-30 第六小组 瞒春 学习笔记
  • 记录k8s-Calico网络插件报错问题
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5
  • 技术对接36
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • 【编程强训11】最近公共祖先+求最大连续bit数
  • 走进Redis之配置文件的修改使用
  • java基于springboot+vue的园区入驻停车管理系统
  • 踩坑篇-Nacos+Sping-gateway+shiro实现分布式认证权限框架
  • SSM美众针纺有限公司人事管理毕业设计-附源码051708
  • 超详细的VsCode创建SpringBoot项目(图文并茂)
  • [PHP内核探索]PHP中的哈希表
  • 自己简单写的 事件订阅机制
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • ECMAScript入门(七)--Module语法
  • ES6简单总结(搭配简单的讲解和小案例)
  • javascript数组去重/查找/插入/删除
  • linux安装openssl、swoole等扩展的具体步骤
  • Mybatis初体验
  • PAT A1120
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React中的“虫洞”——Context
  • spring-boot List转Page
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Swift 中的尾递归和蹦床
  • Vue小说阅读器(仿追书神器)
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序button引导用户授权
  • 一道闭包题引发的思考
  • 因为阿里,他们成了“杭漂”
  • 用element的upload组件实现多图片上传和压缩
  • linux 淘宝开源监控工具tsar
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​批处理文件中的errorlevel用法
  • # include “ “ 和 # include < >两者的区别
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ###项目技术发展史
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (六)vue-router+UI组件库
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • .htaccess 强制https 单独排除某个目录