-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch09s04.html
3 lines (3 loc) · 3.74 KB
/
ch09s04.html
1
2
3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4. 函数</title><link rel="stylesheet" href="styles.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Linux C编程一站式学习" /><link rel="up" href="ch09.html" title="第 9 章 编码风格" /><link rel="prev" href="ch09s03.html" title="3. 标识符命名" /><link rel="next" href="ch09s05.html" title="5. indent工具" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4. 函数</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch09s03.html">上一页</a> </td><th width="60%" align="center">第 9 章 编码风格</th><td width="20%" align="right"> <a accesskey="n" href="ch09s05.html">下一页</a></td></tr></table><hr /></div><div class="sect1" lang="zh-cn" xml:lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2738767"></a>4. 函数</h2></div></div></div><p>每个函数都应该设计得尽可能简单,简单的函数才容易维护。应遵循以下原则:</p><div class="orderedlist"><ol type="1"><li><p>实现一个函数只是为了做好一件事情,不要把函数设计成用途广泛、面面俱到的,这样的函数肯定会超长,而且往往不可重用,维护困难。</p></li><li><p>函数内部的缩进层次不宜过多,一般以少于4层为宜。如果缩进层次太多就说明设计得太复杂了,应考虑分割成更小的函数(Helper Function)<a id="id2738797" class="indexterm"></a>来调用。</p></li><li><p>函数不要写得太长,建议在24行的标准终端上不超过两屏,太长会造成阅读困难,如果一个函数超过两屏就应该考虑分割函数了。<a class="xref" href="bi01.html#bibli.codingstyle" title="Linux内核源代码目录下的Documentation/CodingStyle文件">[<abbr class="abbrev">CodingStyle</abbr>]</a>中特别说明,如果一个函数在概念上是简单的,只是长度很长,这倒没关系。例如函数由一个大的<code class="literal">switch</code>组成,其中有非常多的<code class="literal">case</code>,这是可以的,因为各<code class="literal">case</code>分支互不影响,整个函数的复杂度只等于其中一个<code class="literal">case</code>的复杂度,这种情况很常见,例如TCP协议的状态机实现。</p></li><li><p>执行函数就是执行一个动作,函数名通常应包含动词,例如<code class="literal">get_current</code>、<code class="literal">radix_tree_insert</code>。</p></li><li><p>比较重要的函数定义上侧必须加注释,说明此函数的功能、参数、返回值、错误码等。</p></li><li><p>另一种度量函数复杂度的办法是看有多少个局部变量,5到10个局部变量已经很多了,再多就很难维护了,应该考虑分割成多个函数。</p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch09s03.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="ch09.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch09s05.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">3. 标识符命名 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 5. indent工具</td></tr></table></div></body></html>