Mud 版 (精华区)

发信人: jiayb (多情剑客痴情剑), 信区: Mud
标  题: Lpc编程和编程环境(续)
发信站: 哈工大紫丁香 (Wed Apr  1 18:00:26 1998), 转信

发信人: mice (风中的云), 信区: MUD
标  题: Lpc编程和编程环境(续)
发信站: 冰城驿站之BBS (Fri Feb 27 20:49:04 1998), 转信

2.3 代码风格
  在上面说过函数的顺序对这个Object的特性是毫无影响的。
但是一个有着良好代码风格的程序对LpMud是很重要的。因为
LpMud通常不会也不可能是一个人完成的,如果程序没有较好
的可读性,那么别人理解你的“作品”是很困难的。而且有个
良好的程序风格能给人以优雅的感觉,因此希望大家写的Lpc
程序能有个好的风格。大家中的有些人可能以后会加入XO team
创建自己梦想中的世界,我们要求你采用如下的格式书写程序。

2.3.1 头文件
  在一个文件的开头是一段说明。采用如下格式:

/* /u/trill/obj/test.c
 * from XO Object Library
 * 测试用的Object
 * created by trill 19970808
 * version @(#) test.c 2.1@(#)
 * last modified by trill 19971008
 * 测试tell_wizard这个simul_efun
 */
第一行是这个文件的绝对路径,就是全路径。
第二行是它所在的Mudlib
第三行是它的功能的简单的描述,可以超过一行。
第四行是这个文件的作者和创建时间。
第五行是它的版本号,可能做了多次修改,甚至可能会重写,
      这个数字2.1标志了它大概做过多少次改动。
第六行是最后一次修改的人和时间。
第七行是最后一些修改什么东西。

  对于一个Object我们要求必须有这样一段说明,特别是前面
的五行必须存在,如果做了改动那么最后两行也要加上。
这样一般的一个Object,我们从这段说明就能了解到
一些很重
要的信息。

下面是include一些文件和继承(inherit)一些Object。

#include <ansi.h>
#include "include/test.h"

inherit NPC;
 * 测试tell_wizard这个simul_efun
 */
第一行是这个文件的绝对路径,就是全路径。
第二行是它所在的Mudlib
第三行是它的功能的简单的描述,可以超过一行。
第四行是这个文件的作者和创建时间。
第五行是它的版本号,可能做了多次修改,甚至可能会重写,
      这个数字2.1标志了它大概做过多少次改动。
第六行是最后一次修改的人和时间。
第七行是最后一些修改什么东西。

  对于一个Object我们要求必须有这样一段说明,特别是前面
的五行必须存在,如果做了改动那么最后两行也要加上。
这样一般的一个Object,我们从这段说明就能了解到一些很重
要的信息。

下面是include一些文件和继承(inherit)一些Object。

#include <ansi.h>
#include "include/test.h"

inherit NPC;

  一个Object的函数的顺序和名字对这个Object的表现是毫无影
响的。但是为了让这个Object有良好的可读性,我们要求一个Object
的函数按如下方式排列和命名:
  首先是变量的接口部分,这些函数统一用Set+变量名来改变该
变量的值,用Get+变量来返回变量的值。比如

static int level;

void SetLevl(int i)
{
    level = i;
}

int GetLevel()
{
    return level;
}
  其次是一些操纵和控制变量的一些函数。比如

void AddLevel(int i)
{
    level += i;
}

这两类函数要求每个单词的第一字母大写。

  再是一些Object所能做的事件(event),比如战斗,结婚等等。比如

void eventQuit()
{
   ...
}

  这些函数要求事件的每个单词的第一字母大写,比如eventFight,
eventMarry等等。

  再下面的是由Driver调用的一些函数,比如create(), heart_beat,
setup()。

  最后是一些这个Object自己私有的函数,完成一些特别的功能。这些
函数通常让要求每个单词的小写,中间用下划线(_)隔开。

  要注意的是每个函数之间用一个空行隔开。
  这些是对一个文件的整体要求,如果你有兴趣将来在XO team写程序,
最好从现在开始就养成这样的编程习惯。如果你是别的Mud里面的巫师,
我想一个Mud里面最好也有一个统一的整齐的风格。
  也许你会问,这样要求有必要吗?这样太麻烦,程序写了自己能明
白就可以了。这是不对的,LpMud是大家合作的项目,如果你做的程序
别人没法看懂,不知道写的东西里面有些什么,能调用什么函数,那
么实际上你写的东西是失败的,没人会去用它,它可能永远“死”在
硬盘上。而且函数统一的命名法能尽快找到你所需要的函数,同时也
能提高整个程序的可读性。
  对于代码风格XO还有一些别的要求,我们将在以后的文章中介绍,
如果你加入了XO team,代码风格将是第一篇要读的文章。

小结:
  关于Lpc程序和编程环境,就介绍到这里。看完这一章,我想大家
要记住的是LpMud是采用Lpc做为编程语言,Unix文件结构作为文件组
织形式。Lpc是编写Object的一种语言,它的程序没有特殊的开始和
结束的标志。如果Object被使用到,那么它被调入内存,如果这个
Object有一个叫create()的函数,首先被执行,来初始化一些变量。
Lpc的Object是一堆变量的集合,同时带有一些能操纵改变这些变量
的函数。Lpc的代码风格,我想一个Mud最好有一个统一的风格,特别
的XO有自己的特别的要求。


题外话:
  当了好久的巫师,也用Lpc写了一些东西。我一直在试着理解Lpc,
因为以我看如果一个巫师没有真正理解Lpc,他就不可能真正理解
LpMud。理解Lpc并不仅仅意味着会使用它,许多巫师能使用它但是
并不真正理解它。我希望在这个Lpc的介绍文章,能给大家一个Lpc
的整体的印象,真正把握和理解Lpc,能创造自己心中梦想的世界。


--
※ 修改:.yangx 于 Apr  1 17:43:29 修改本文.[FROM: 202.97.228.245]
※ 来源:.冰城驿站之BBS bbs.hr.hl.cn.[FROM: 202.118.226.90]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yangx.bbs@bbs.hr.hl.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:9.000毫秒