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

你可能感兴趣的文章
Oracle中序列的操作以及使用前对序列的初始化
查看>>
oracle中新建用户和赋予权限
查看>>
Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
查看>>
Oracle中的rownum 和rowid的用法和区别
查看>>
oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
查看>>
oracle中表和视图的区别,oracle中常用表和视图
查看>>
oracle从备份归档日志的方法集中回收
查看>>
oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
查看>>
Oracle修改字段类型
查看>>
oracle典型安装失败,安装oracle 10失败
查看>>
Oracle内存结构详解(四)--Oracle SGA其他组成部分
查看>>
Oracle分析函数之LEAD和LAG
查看>>
Oracle创建database link(dblink)和同义词(synonym)
查看>>
oracle创建数据库的步骤
查看>>
Oracle发布VirtualBox 7.1稳定版!支持ARM、优化了UI、支持Wayland等
查看>>
Oracle和SQL server的数据类型比较
查看>>
oracle基础 管理索引
查看>>
oracle用户改名
查看>>
Oracle用游标删除重复数据
查看>>
Oracle的聚合函数group by结合CUBE和ROLLUP的使用
查看>>