会员登录 用户名: 密码: 登录 新会员注册 [找回密码]
当前位置:编程论坛 >> C/S程序开发专区 >> Delphi编程论坛 >> [转帖]一名Delphi程序员的开发习惯(非技术问题)
首页
中资源
  发表一个新主题  发表一个新投票  回复主题 您是本帖的第 30869 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
 * 贴子主题:[转帖]一名Delphi程序员的开发习惯(非技术问题) 报告本帖给版主  显示可打印的版本  把本贴打包邮递  把本贴加入论坛收藏夹  发送本页面给朋友  把本贴加入IE收藏夹 
 keyii 帅哥哟,离线,有人找我吗?巨蟹座1978-7-13
  
  
  等 级:版主
  积 分:975
  专家分:3178
  提问帖:109/103
  回答帖:446
  总帖数:1422
  经验值:1981
  注 册:2006-1-6
给keyii发送一个短消息 把keyii加入好友 查看keyii的个人资料 搜索keyii在Delphi编程论坛的所有贴子  访问keyii的主页 引用回复这个贴子 回复这个贴子楼主

发贴心情 [转帖]一名Delphi程序员的开发习惯(非技术问题)

有关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。
一.建立工程目录
       首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简练。然后,在此目录中创建以下各个目录:
       <Doc>:用来存放该项目相关的开发文档(需求说明,概要设计,详细设计等等等等);
       <Source>:用来存放Delphi源程序中的”.Dpr”,”.Pas”,”.Dfm”等文件;
       <Dcu>:该目录中存放”.Dcu”文件,将’.Pas’与’.Dcu’文件分开存放只是为了让Source目录的内容更加清楚一些;
       <Bin>:存放工程的输出文件,比如”.Exe”,”.Dll”或者”.Ocx”等等;
       <Log>:用来存放日志文件;通常在这个目录中我会放一个”<项目名称>程序员日志.Txt”文件。
       <Images>:当然是存放工程中用到的图片的目录了。一般情况下,这个目录是少不了的。假如还用到其他资源,那么也一样建立各自的目录,比如Wav,比如Avi等等。
二.设置工程选项
      在Delphi中创建一个新的工程,将此工程保存到Source目录中,同时:
a. 选一个耐看的,与项目有些联系的图标作为这个工程的图标。当然,这个图标可能只是临时用用的,但是总要比Delphi默认的那个难看的要好才行,要不然,怎么对得起自己?
b.将Project Options -> Directories/Conditionals页面中的Output Directory设置为Bin目录;
c.将Unit output Directory设置为Dcu目录。
三.添加常量单元
      添加一个新的Unit,另存为“unt<工程名> Consts.Pas”,用来保存工程中用到的常量。
四.有关窗体(Form)及单元(Unit) 
      按照匈牙利命名法则给Form命名,则一个用来登录的窗体可以命名为’FrmLogin’,而其单元名可以为’untLogin’。通常,两个对应的Form和Unit的名称在除去’Frm’或’unt’的缩写后应当保持一致。
      在Unit的头部添加本单元的注释,注释的格式可以参照Delphi的源码,但是至少应当包含以下几项:功能描述;作者;版权;创建时间;最后修改时间;修改历史等等。
      将新创建好的Form的Caption设置为该Form类的名称,而不是使用Delphi默认的。比如,将Form1更名为FrmLogin后,此时我们获得了TFrmLogin这个新的窗体类,并且Delphi自动将窗体的Caption更新为'FrmLogin’。依我看,该Caption应当为’TFrmLogin’才是,因为我们在设计的是一个窗体类TFrmLogin,而不是仅仅对FrmLogin进行操作。
      向TFrmLogin这样功能明确的窗体类,许多人都有在设计期就将其Caption设置为诸如“操作员登录”这种名称的习惯。我的习惯是,象“操作员登录”这样的常量,通常存放在unt<工程名>Consts.Pas中,用ResourceString来定义,或者用Const来定义。至于窗体的Caption的命名,应当属于运行期的工作。所以,我往往在TForm.OnCreate事件触发之时才对Caption进行操作,比如:

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
       Caption := csLoginTitle;
       ....
end;

五.关于Format函数的使用
       有iYear,iMonth,iDay三个数据,要显示诸如“生日:1976/3/18”这样的信息,你通常怎么做?使用s := ‘生日:’+IntToStr(iYear)+’.’+IntToStr(iMonth)+’.’+IntToStr(iDay); 吗?这样实在是太累了。我的习惯是,在unt<工程名>Consts.Pas中增加一个常量csBirthDayFormat = ‘生日:%d/%d/%d’来保存显示格式,然后使用s := Format(csBirthDayFormat, [iYear, iMonth, iDay]);这样的语句完成数据的拼装。这么做的好处显而易见,那就是你只需在一个地方维护数据的显示格式。
       Format函数功能强大,我对它很是推崇,你呢?
六.关于注册表或者Ini文件的存储
      原先访问注册表我通常使用TRegistry,而访问Ini文件通常使用TIniFile。这两个类的使用方法各不相同,因此想要使用相同的代码既能访问注册表又能访问Ini文件几乎是不可能的。真头疼啊!
      终于我发现了救星!那就是TRegistryIniFile类。查看Registry单元,我们发现,TRegistryIniFile继承自TCusomIniFile。而TIniFile也是继承于TCusomIniFile。因此,使用抽象类TCusomIniFile来实现对注册表或者Ini文件的访问便是一举两得了。比如:

var
  csmInifile: TCusomIniFile;
begin
  if blUseIniFile then//如果使用Ini文件
    csmInifile:= TIniFile.Create(csRootKey)
  else
    csmInifile:= TRegistryIniFile.Create(csRootKey);
  //接着就可以使用csmIniFile对Ini文件进行访问,
  //或者用类似访问Ini文件的方式访问注册表。

七.关于TStream流以及TFileStream,TMemoryStream等等
       TFileStream和TMemoryStream都继承自抽象类TStream,这意味着我们可以使用一套代码完成对文件和内存的存取操作。因此,定义一些接口的时候,我往往倾向于将参数的类型定义为抽象类,而不是具体类。比如,要完成保存功能的一个函数,定义成

function Save(AStream: TStream): Boolean;
就比定义成
function Save(AStream: TFileStream): Boolean;
要灵活的多。
前一个定义是具有前瞻性的,因为它可以适用于以后可能出现的新型态的流。而后一个定义只适用于TFileStream这种流(当然包括TFileStream的子类),呆板多了。
我的习惯:如果存在抽象类,那么尽量将参数定义为抽象类的类型,毕竟,我们无法预见未来。
八.多使用TAction
       Delphi 4以后引入了Action的概念,并且在Standard组件栏中增加TActionList组件。使用Action的好处是,控件状态同步的烦恼从此一扫而空!

[此贴子已经被作者于2006-4-16 9:56:07编辑过]

每天多做一点点是成功的开始
每天进步一点点是领先的开始
每天创新一点点是卓越的开始

http://www.syrjcn.cn

发帖:2006-4-16 9:47:00
  鲜花(0)  鸡蛋(0)
 小新 帅哥哟,离线,有人找我吗?
  
  
  头 衔:后勤部长
  等 级:管理员
  积 分:8891
  专家分:1169
  提问帖:4/2
  回答帖:105
  总帖数:1023
  经验值:1779
  注 册:2002-5-19
给小新发送一个短消息 把小新加入好友 查看小新的个人资料 搜索小新在Delphi编程论坛的所有贴子  访问小新的主页 引用回复这个贴子 回复这个贴子2

发贴心情 

这篇文章太有价值了,加精!

当你能飞的时候,就不要放弃飞。
当你能梦的时候,就不要放弃梦。
当你能爱的时候,就不要放弃爱。
生命太过短暂,今天放弃了明天不一定能得到,,,

发帖:2006-4-16 9:54:00
 黑巫师 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:2
  经验值:54
  注 册:2006-4-18
给黑巫师发送一个短消息 把黑巫师加入好友 查看黑巫师的个人资料 搜索黑巫师在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子3

发贴心情 

受教..
发帖:2006-4-18 21:49:00
 lybkm 帅哥哟,离线,有人找我吗?狮子座1981-8-14
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:11
  经验值:67
  注 册:2006-5-3
给lybkm发送一个短消息 把lybkm加入好友 查看lybkm的个人资料 搜索lybkm在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子4

发贴心情 

经典由浅到深都有了,不过我觉得程序部分应该详细介绍一下
比如说函数、过程、各控件、数据库的命名习惯
启动前调整参数的main程序(以适应不同用户登录)所应该或者是"最好"有的参数
内存的控制习惯等
数据库中各个字段的数据类型和长度等等

这些也都是我恨盼望的,现在只是根据“经验”自行处理,想系统化,工业化难啊!

发帖:2006-5-7 8:09:00
 lybkm 帅哥哟,离线,有人找我吗?狮子座1981-8-14
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:11
  经验值:67
  注 册:2006-5-3
给lybkm发送一个短消息 把lybkm加入好友 查看lybkm的个人资料 搜索lybkm在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子5

发贴心情 

我没受过正统的编程培训,只是自学,希望在本站有所崭获.....

ps:不过也有“好处”,我的编程思想就有点 “天马行空” 不受拘束。

发帖:2006-5-7 8:13:00
 小新 帅哥哟,离线,有人找我吗?
  
  
  头 衔:后勤部长
  等 级:管理员
  积 分:8891
  专家分:1169
  提问帖:4/2
  回答帖:105
  总帖数:1023
  经验值:1779
  注 册:2002-5-19
给小新发送一个短消息 把小新加入好友 查看小新的个人资料 搜索小新在Delphi编程论坛的所有贴子  访问小新的主页 引用回复这个贴子 回复这个贴子6

发贴心情 

以下是引用[i]lybkm在2006-5-7 8:13:00[/i]的发言:
我没受过正统的编程培训,只是自学,希望在本站有所崭获.....

 ps:不过也有“好处”,我的编程思想就有点 “天马行空” 不受拘束。


其实Delphi也没有什么正统不正统的说法,市面上的书多数都是野书(非官方)千篇一律,李维的书也只占了点Borland边。


当你能飞的时候,就不要放弃飞。
当你能梦的时候,就不要放弃梦。
当你能爱的时候,就不要放弃爱。
生命太过短暂,今天放弃了明天不一定能得到,,,

发帖:2006-5-7 8:44:00
 yingcai321 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:54
  经验值:131
  注 册:2006-5-26
给yingcai321发送一个短消息 把yingcai321加入好友 查看yingcai321的个人资料 搜索yingcai321在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子7

发贴心情 


很不错
发帖:2006-5-26 17:08:00
 kou2006 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:26
  经验值:95
  注 册:2006-5-29
给kou2006发送一个短消息 把kou2006加入好友 查看kou2006的个人资料 搜索kou2006在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子8

发贴心情 

这个习惯挺好的!顶一下!!!
发帖:2006-5-29 17:33:00
 mzq 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:3
  经验值:60
  注 册:2006-6-26
给mzq发送一个短消息 把mzq加入好友 查看mzq的个人资料 搜索mzq在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子9

发贴心情 

受益匪浅 
十分感谢
发帖:2006-7-25 13:33:00
 qingbigeng 美女呀,离线,快来找我吧!
  
  
  等 级:初出江湖
  积 分:200
  专家分:0
  提问帖:0/0
  回答帖:0
  总帖数:18
  经验值:90
  注 册:2006-7-27
给qingbigeng发送一个短消息 把qingbigeng加入好友 查看qingbigeng的个人资料 搜索qingbigeng在Delphi编程论坛的所有贴子 引用回复这个贴子 回复这个贴子10

发贴心情 

这些对我这个初学者来说很有用途,谢谢编者
发帖:2006-7-27 19:58:00

本主题贴数131,分页:[返回帖子列表] [上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] ... [14] [下一页]
 *快速回复:[转帖]一名Delphi程序员的开发习惯(非技术问题)  [ 回帖是一种美德 :) ]
会员账号 用户名    还没注册?    密码    忘记密码?
内容
  • HTML标签: 不可用
  • UBB标签: 可用
  • 贴图标签: 可用
  • 多媒体标签:可用
  • 表情字符转换:可用
  • 上传图片:不可用
  • 最多15KB
  • 点击表情图即可在帖子中加入相应的表情
                                
    邮件回复 显示签名   [Ctrl+Enter直接提交贴子]

    管理选项锁定 | 解锁 | 提升 | 删除 | 移动 | 解固 | 总固顶 | 奖励 | 惩罚 | 发布公告