函数是所有程序中最重要的单位,无论是面向过程还是面向对象语言。怎样写好函数非常重要。下面是我看书还有结合自己的经验总结的:
首先,函数的书写要遵循一个很重要的原则:短小精悍,即语句要简短,功能要单一,尽量满足一个函数只做一件事情的原则。
下面就具体函数的书写过程:
(1) 确定函数返回类型,void int bool还是等等?暂时不确定设置为空void;
(2) 函数名称:函数名称要满足知名知意的原则,还要注意字母的大小写,例如快速排序的函数名一般QuickSort,至少我暂时找不到更适合的了!
(3) 函数的参数:有些函数没有参数,即为空;但是函数的功能一般是输入数据,返回处理结果,输入的数据即为参数,例如对一个数组中的数据排序的函数一般要有两个参数(数组,数组长度),例如QuickSort(int a[],int length);
(4) 函数的变量:首先变量名也要遵循知名知意以及字母大小写的原则,这个我在后面的例子中会有;
(5) 函数逻辑实现:这是函数的核心,即算法描述,首先要清楚算法的实现过程。最常用的也就是for while if三种基本语句,选择合适的语句很重要。循环语句个人认为有时候经常会纠结>=还是>,<=还是<,差一个等号结果会受到很大的影响,必须很认真的思考。我一般会通过函数循环过程的前几个和最后几个来验证一下程序的正确性;
(6) 运行测试函数:输入参数,输出结果,看是否正确,if(正确)看(7);else 检查代码修改。
(7) 重构:如果结果输出正确,只能说明函数功能上实现了,并不说明是最优的,还要重新梳理代码,使其精简健壮更有效。
下面就举个实例来说明一下:
快速排序算法的实现:算法大家都知道吧,忘了可以百度下,哈哈。
函数代码(c语言):
1 void UseQuickSort(int a[],int length) 2 { 3 void QuickSort(int a[],int first,int last); 4 printf("The quick sort result is:\n"); 5 QuickSort(a,0,length-1); 6 } 7 8 void QuickSort(int a[],int first,int last) 9 { 10 if(first>=last)//函数结束条件 11 return; 12 int temp,head,end;//注意变量名称的选取 13 temp=a[first]; 14 head=first; 15 end=last; 16 while(head<end)//循环条件注意加'='号和不加的区别,此时跳出循环时head==end 17 { 18 while(head<end&&a[end]>=temp)//循环条件要全,缺一不可 19 end--; 20 a[head]=a[end]; 21 while(head<end&&a[head]<=temp) 22 head++; 23 a[end]=a[head]; 24 } 25 a[head]=temp;//这一句很关键 26 QuickSort(a,first,head-1);//下面这两句是递归调用该算法实现整体排序 27 QuickSort(a,head+1,last); 28 }
好的代码给人一种美的感觉,要努力写出漂亮整洁的代码。共勉。。。