编程心得 2006-11-29
2006年11月30日
前一阵子写程序,经常发现写好一个函数,之后又得改。原因是这样的:我写这个函数的时候,总是想使它成为一个比较通用的函数,比如 GetOutputFileName,明明作用是创建配置文件的输出文件名,即 GetConfigOutputName,非得写得像是一个通用函数。结果由于该“通用”函数并不通用,非但影响了调用它的函数的可读性,而且导致了修改时的不便。
于是,得出一个结论:不知道是不是通用的函数,一开始不要写得通用,起名字也不要通用,而要以它被调用的地方的作用来起名。只有当它真正显出通用性了,再改名。
第二个心得是,用临时文件也能完成进程间通信。首先,Windows 进程间通信手段比较少,信号量的通信数据量太小,管道的方向太单一,socket 用起来太复杂,WM_COPYDATA 消息只能对窗体发送,没有窗体的程序无法接收。因此,使用临时文件可以解决这些矛盾。使用临时文件有一个方法:客户端创建并写入 A 文件。服务器端监视目录(目录读取和写入都是原子操作),发现后读取,完毕后创建一个 B 文件表示读取完毕。客户端也监视目录,看到 B 文件后,删除 A 文件和 B 文件(先 A 后 B,这样服务器端无论监视 A 还是 B 的删除都可以)。服务器端看到 A 文件被删除后再重新等待新的 A 文件。
第三个心得是,对于易出错的处理过程,服务器端应该想办法让客户端知道哪里出了错。这一点有时会忘记。
其实对于第一个,我觉得更好的方法是重构,刚开始不用很在意通用性,等发现是通用的啦,使用重构来完成改造,很方便的
to zcb:你说得的确是有道理的,我现在也采用这种做法了。