动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   程序开发 → 阅读文章

 欣赏优美的代码:实际的例子

作者来源: 
阅读 数 546 人次 , 2006-4-25 9:05:00 


  在讨论高质量子程序的细节问题之前,我们首先来考虑两个基本名词。什么叫“子程序”?子程序是具有单一功能的可调用的函数或过程。比如C 中的函数,Pascal 或Ada 中的函数或过程,Basic中的子程序或Fortran 中的子程序。 有时,C 中的宏指令或者Basic中用GOSUB调用的代码块也可认为是子程序。在生成上述函数或过程中,都可以使用创建高质量子程序所使用的技术。什么是“高质量的子程序”?这是一个比较难以回答的问题。反过来最简单回答方式是指出高质量子程序不是什么。下面是一个典型的劣质子程序(用Pascal写成):

Procedure HandleStuff ( Var InputRec:CORP_DATA,CrntQtr:integer,
EmpRec:Emp_DATA, Var EstimRevenue:Real, YTDRevenue:Real,
ScreenX:integer,ScreenY:integer,Var NewColor:Color_TYPE,
Var PrevColor:COLOR_TYPE,Var Status:STATUS_TYPE,
ExpenseType:integer);
  begin
   for i := 1 to 100 do begin
    InputRec.revenue[1]:= 0;
    InputRec.expense[i]:=CorpExpensse[CrntQtr,i]
   end;
   UpdateCorpDatabase(EmpRec);
   EstimRevenue:=YTDRevenue * 4.0 /real(CrntQtr)
   NewColor:=PrevColor;
   status:=Success;
   if ExpenseType=1 then begin
    for i:= 1 to 12 do
     Profit[i]:= Revenue[i]-Expense.Type[i]
    end
   else If ExpneseType= 2 then begin
    Peofit[i]:=Revenue[i] - Expense.Type2[i]
   end
   else if ExpenseType= 3 then
   begin
    Profit[i]:=Revenue[i] - Expense.Type3[i]
   end
end

   这个子程序有什么问题?给你一个提示:你应该至少从中发现10个问题。当你列出所发现的问题后,再看一下下面所列出的问题:

   · 程序的名字让人困惑。Handlestuff()能告诉我们程序是干什么的吗?

   · 程序没有被说明。

   · 子程序的布局不好。代码的物理组织形式几乎没有给出其逻辑组织形式的任何信息。布局的使用过于随心所欲,程序每一部分的布局都是不一样的。关于这一点。只要比较一下ExpenseType=2 和ExpenseType=3 两个地方的风格就清楚了。

   · 子程序的输入变量值InPutRec 被改变过。如果它作为输入变量,那它的值就不该变化。如果要变化它的值,就不该称之为输入变量InputRec。

   · 子程序进行了全局变量的读写操作。它从CorpExpense 中读入变量并写给Profit。它应该与存取子程序通信,而不应直接读写全局变量。

   · 这个子程序的功用不是单一的。它初始化了某些变量。对一个数据库进行写操作,又进行了某些计算工作,而它们又看不出任何联系。一个子程序的功用应该是单一,明了的。

   · 子程序中没有采取预防非法数据的措施。如果CrntQtr 的值为“0”,那么,表达式YTDRevenue*4.0/real(CrntQtr)就会出现被零除的错误。

   · 程序中使用了几个常数:100, 4.0, 12, 2和3。

   · 在程序中仅使用了域的CORP_DATA 型参数的两个域。如果仅仅使用两个域,那就该仅仅传入特定的域而不是整个结构化变量。
  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Palm开发工具及编程术语简介
· 下一篇:游戏开发新手入门之位图化图形
· Windows XP中怎样禁止使用“文件夹选项”
· 深入编程:控制面板知多少(上)
· 如何让Windows XP操作系统运行效率更高
· 小知识:Windows XP系统搜索故障及处理办法点点通
· Windows下黑客编程基础


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077