博客
关于我
代码简洁之二:函数只做一件事儿
阅读量:441 次
发布时间:2019-03-06

本文共 2130 字,大约阅读时间需要 7 分钟。

拆分函数,简化代码,这是编程中追求可读性与维护性的重要实践。以下是对原文的优化版本,语言更加简洁流畅,结构更清晰。

拆分函数:让代码更具可读性

在编程中,我们常常面临代码过于冗长、难以维护的问题。通过不断拆分函数,我们可以让代码更清晰,更具可读性。这种方法的核心在于将复杂的逻辑分解为多个简单的函数,每个函数专注于完成单一任务。

1. 函数拆分的逻辑步骤

拆分函数的过程可以分为以下几个步骤:

  • 概括目的:识别函数的核心目标。
  • 提取步骤:将函数内部的操作拆分为多个独立的步骤。
  • 提取抽象层次:提取动名词,形成新的函数。
  • 保持一致性:确保新形成的函数在抽象层次上与原函数保持一致。

通过这样的拆分过程,我们可以逐步将复杂的逻辑转化为多个简单的函数。例如,一个包含多个判断逻辑的函数可以被拆分为多个专门处理特定逻辑的函数。

2. 代码拆分的示例

以一个典型的查询处理函数为例,原始代码如下:

// 接收查询的参数$minDate = trim($this->input->get_post('startDate', true));$maxDate = trim($this->input->get_post('endDate', true));$gameId = trim($this->input->get_post('gameId', true));$adPositionId = trim($this->input->get_post('adPositionId', true));$orderField = trim($this->input->get_post('orderField', true));$order = trim($this->input->get_post('order', true));$page = intval($this->input->get_post('page', true));$pageSize = intval($this->input->get_post('pageSize', true));// 判断排序规则if (!$order || !in_array($order, array('asc', 'desc'))) {    $order = 'desc';}// 判断排序字段if (!$orderField || !isset($this->_fieldsMappingArray[$orderField])) {    $searchParam['sort_by'] = 'date';} else {    $searchParam['sort_by'] = $this->_fieldsMappingArray[$orderField];}// 处理日期参数if (!$minDate) {    $minDate = date('Y-m-d', strtotime('-1 day'));}if (!$maxDate) {    $maxDate = date('Y-m-d');}// 转换日期为时间戳if (strtotime($minDate)) {    $searchParam['minDate'] = strtotime($minDate . ' 00:00:00');}if (strtotime($maxDate)) {    $searchParam['maxDate'] = strtotime($maxDate . ' 23:59:59');}

3. 代码优化后的版本

通过拆分,我们可以将上述逻辑转化为多个独立的函数:

$params = $this->getSearchFields($this->searchFieldOptions, $_REQUEST);// 判断参数合法性if ($tips = $this->checkParams()) {    $this->message->tips($tips);}// 查询游戏统计数据$stats = $this->_searchWebGameStats($params);// 组装数据并展示$this->template->cpView('users/webGameStats', $stats);

4. 函数拆分的好处

  • 代码简洁:每个函数只处理一个任务,代码更简洁明了。
  • 可读性强:函数之间的关系清晰,易于理解。
  • 可维护性高:单个函数的修改影响范围小,减少错误。
  • 降低复杂度:复杂的逻辑被分解为多个简单步骤,降低学习成本。

通过不断拆分函数,我们可以逐步将复杂的代码转化为易于维护的代码结构。这种方法不仅有助于写出更好的代码,还能让团队成员更容易理解和协作。

5. 实践建议

  • 始终保持单一职责:每个函数应专注于完成一件事。
  • 逐步拆分:从复杂的函数开始,逐步拆分为更小的函数。
  • 保持一致性:确保拆分后的函数逻辑与原函数一致。
  • 注重抽象层次:提取动名词形成函数名,保持代码结构清晰。

通过遵循这些原则,我们可以逐步将代码优化为更具可读性和维护性的状态。好的代码不是随意写出来的,而是经过反复思考和优化的结果。

转载地址:http://rfsuz.baihongyu.com/

你可能感兴趣的文章
Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
查看>>
Nodejs中的fs模块的使用
查看>>
NodeJS使用淘宝npm镜像站的各种姿势
查看>>
NodeJs入门知识
查看>>
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>
nodejs在Liunx上的部署生产方式-PM2
查看>>
nodejs基于art-template模板引擎生成
查看>>
nodejs字符与字节之间的转换
查看>>
NodeJs学习笔记001--npm换源
查看>>
NodeJs学习笔记002--npm常用命令详解
查看>>
nodejs学习笔记一——nodejs安装
查看>>
vue3+Element-plus icon图标无法显示的问题(已解决)
查看>>
NodeJS实现跨域的方法( 4种 )
查看>>
nodejs封装http请求
查看>>
nodejs常用组件
查看>>
nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
查看>>
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>