博客
关于我
代码简洁之二:函数只做一件事儿
阅读量: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/

你可能感兴趣的文章
operator() error
查看>>
OPPO K3在哪里打开USB调试模式的完美方法
查看>>
oppo后端16连问
查看>>
OPPO软件商店APP侵权投诉流程
查看>>
Optional类:避免NullPointerException
查看>>
Optional讲解
查看>>
ORA-00923: 未找到要求的 FROM 关键字
查看>>
ORA-00932: inconsistent datatypes: expected - got NCLOB【ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 】【解决办法】
查看>>
ORA-00942 表或视图不存在
查看>>
ORA-01034: ORACLE not available
查看>>
ORA-01152: 文件 1 没有从过旧的备份中还原
查看>>
ORA-01207:文件比控制文件更新 - 旧的控制文件
查看>>
ORA-01795: 列表中的最大表达式数为 1000
查看>>
ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
查看>>
ORA-08102的错误
查看>>
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常
查看>>
ORA-12514: TNS:listener does not currently know of service问题原因
查看>>
ora-12541:tns:no listener
查看>>
【docker知识】联合文件系统(unionFS)原理
查看>>
ORACEL学习--理解over()函数
查看>>