制作脚本之类的需要培训吗,具体的我该怎么开发脚本?对于程序的这方面压根血压高 没有任何症状的基础·····

|  
|  
|  
|  
|  
只需一步,快速开始
查看: 17382|回复: 89
上古4脚本学习 (
68楼增加第三课:mod基础概念和流控)
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
一个月前才开始玩上古,被这个游戏异常开放的引擎所吸引,最近开始研究脚本,学习之余,想写一些中文化的教程之类,就是不知道是否游戏快过气了而没人响应,呵呵。。。不管吧,有兴趣的同学接着往后看。
上古4的脚本并非完整的语言
有别于魔兽使用的Lua,Lua是一门完整的自适应的精巧的编程语言,但上古使用的只是一些规则化的描述,甚至连循环语句都没有,写script的人只是使用这些简单的规则将上古开放的N多小功能块组织起来(当然,还包括obse增加的若干功能),完成想法。
1,有一定的逻辑思维能力
2,英语还算凑合过得去
3,记忆力大于等于常人
写上古4的script,要求最高的就是记忆力,并不需要太多编程技巧,基础的就行。为了搞懂每个功能怎么使用,一般的英文能力也是需要的。
为了简单明了,我会略去很多细节,这样比较方便新人学习,由于我也是最近才开始接触上古4的script,肯定会有一些错漏,各位发现请指正。
完整的上古4脚本教程请参考上古4的wiki:
好了,我们开始!!!
一:字符和注释
1,空白字符都会被上古4的脚本引擎略掉,你可以写一个空格,为了排版,你也可以写N多空格
当然,你不能把一个英文单词拆开。。。
2,脚本引擎发现“;”时,会略去此分号后面直到行末的任何信息,所以,尽可能用“;”来增加注释,注意,此分号为英文分号!
3,有条件嵌套时,尽可能在前面使用tab键来进行缩进排版,我不知道老滚的脚本引擎是否会像Python一样强制要求tab键缩进,但为了符合规矩,请大家一律使用tab进行缩进,不要用空格代替。
4,所有字符大小写不敏感,也就是ABC和abc是一个意思,类似windows
二:变量和语法
1,上古只有4种基础变量类型
short& && && && &用于比较小的整数
long& && && && & 用于比较大的整数
float& && && && &浮点,也就是小数
ref& && && && &&&其它对象的参考,或者引用,总而言之代表任何一个东东
2,当你需要保存一些状态,标志等信息的时候,就可以定义一个变量,然后把信息存储进去。使用方法:
short& &svalue& && &&&;一个短整形
long& & lvalue& && &&&;一个长整形
float& &fvalue& && &&&;一个浮点数
ref& &&&this_is_ref& &;一个引用
3,变量赋值
上古4的变量赋值跟一般语言不同,是强制使用set命令来置值,语法:
set &某变量& to &某值&
变量在set之前必须先定义,范例:
float fvalue
set fvalue to 0.2
set fvalue to 0
set a_ref to player& &;player代表玩家,也就是你的角色
4,全局or局部
上古4定义了一堆全局变量,这些变量可以在任何时候访问,你也可以增加全局变量,但绝大多数情况下,没必要这么干,全局变量的使用还有一些细节,这里略过。
在你的脚本文件中,你使用上述方法定义的变量,全部都会被当成闭包变量处理,老滚在这一点上做的非常优秀。
什么是闭包变量呢?
有编程基础的同学都知道,定义一个局部变量后,如果程序离开定义块,这个变量将失效。
闭包变量,简而言之就是对于你来说,这个变量是全局的,每次进入到你的脚本中,这个变量的值都不会失效,上次进入你的脚本,你把某值设置成了1,那么下次进入,这个值还会是1。
而对于老滚的引擎来说,这个值它是看不见的,也就是你不需要担心你定义的变量是否会跟其它人定义的变量名字相同而冲突。
一个特殊变量:fQuestDelayTime
它的值代表你想让你的脚本执行的频率多高,设置成1就是每秒执行1次,0.5就是每秒执行2次,但最快也就是1帧1次。
set fQuestDelayTime to 0.001& && && && &;这样你的脚本将会在生效期内每0.001秒执行一次,但不会超过每帧1次
这些都不用解释了吧,注意:*和/的优先级高于+和-。%的优先级高于+和-但是低于*和/,所以在你不清楚优先级时,尽量多使用小括号()来确保你的意图。
&&:两个条件与,也就是这个符号左右的条件需要同时满足
||:两个条件或,也就是这个符号左右的条件满足任意一个即可
注意:||的优先级小于&&,所以,请多用()
还有一些比较高级数学操作,比如DR里面就使用了很多对数和三角函数。
这是上古4的脚本中唯一的分支语句,语法:
&&你想干的事
&&条件满足你想干的事
&&条件不满足你想干的事
if (条件1)
&&条件1满足你想干的事
elseif (条件2)
&&条件2满足你想干的事
&&都不满足你想干的事
这个也没什么好说的,任何一个语言都会有条件分支语句,条件中,你可以把N多条件使用&&和||放在一起,注意多用()保证意图就行。
三:执行块
begin &执行定义&
记得把你的所有变量定义放在begin的前面
而在begin和end中间放置你的所有执行语句
执行语句中可以使用return强行退出执行
执行定义:
游戏定义了很多执行定义,就是你脚本执行的触发时机,我们先了解最简单的一个:gamemode
意思是在所有非暂停(比如说你打开道具栏时)情况下,你的脚本将会每帧都执行,当然,受限于全局变量fQuestDelayTime
是的,每帧都执行!所以,请保证你的代码尽可能的快,在条件不满足时尽可能的早结束,如果太慢,影响FPS的程度可是很明显的哦!
好了,我们先了解这么多吧,下面是一个简单的定时器小例子,wiki上有原文。
我们要做一个简单的定时器,从游戏load后开始计时,5秒后在屏幕上打印一行信息,嗯,就这么简单,脚本如下:
scn timerTestScript
float timer
float fQuestDelayTime
short doOnce
begin gamemode
& &&&set fQuestDelayTime to 0.001
& &&&if ( doOnce == 0 )
& && && &set timer to 5& &; Initialize the timer variable
& && && &set doOnce to 1
& &&&endif
& &&&if ( timer & 0 )& && && && && && && && && && && && && && && && &
& && && &set timer to timer - getSecondsPassed& && &&&
& &&&else& && && && && && && && && && && && && && && && && && && && && &
& && && &Message &Your 5 seconds are up&
& &&&endif&&
1,第一行scn timerTestScript
scn是引擎内定关键字,意思是脚本名称,timerTestScript就是我们这个小例子的名称。
所有脚本都要把这行放在最前面。
2,使用了begin gamemode执行块,这样从游戏load开始,在非菜单模式下,我们的脚本将每帧都执行
3,使用了特殊变量fQuestDelayTime,我们设置成0.001,这样,保证我们的脚本每帧肯定都会执行
4,if ( doOnce == 0 )
& &我们这次执行是第一次,那么,我们初始化一个定时器变量timer,设置成5,然后把doOnce设置成1,表示我们已经初始化过了
5,if ( timer & 0 )& && && && && && && && && && && && && && && && &
& && && &set timer to timer - getSecondsPassed
& &如果timer的值目前大于0,也就是还没到5秒,我们更新这个定时器,把剩余时间设置成timer - getSecondsPassed。
& &getSecondsPassed是内建函数,它会返回当前时间和上一次执行我们脚本的时间差,以小数计量的秒值。
6,else& && && && && && && && && && && && && && && && && && && && && &
& && && &Message &Your 5 seconds are up&
& &时间到,使用Message函数打印一行信息到屏幕上
很简单是吧,呵呵。。。其实老滚的脚本并不难,关键在于细心。
经常在混战中一不小心把自己的同伴MM给斩首了,哪怕设为皇冠也无用,异常郁闷。。。
理论不如实践,稍微改了一下DR5,增加了对皇冠人物的判断,现在攻击皇冠人物应该不会进入子弹时间模式了
1,我只是改了子弹时间的判断,一些魔法和非子弹时间的死亡攻击仍然有可能发生!
2,我改的是原版DR5,没有增加任何我自己的奇怪代码
3,我自己测试了一下,貌似是木有问题,但不保证一定不会对皇冠人物进行死亡攻击,各位同学不要肆无忌惮。
覆盖Data下的原esp即可,注意自行备份!!!!!!!!
21:01 上传
点击文件名下载附件
138.02 KB, 下载次数: 83
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
一起学习如何制作一个简单的法术mod
第一期介绍了一些上古4基本的脚本语法,看起来还有很多观望者,对脚本这潭水的深浅还持有怀疑态度,诚然,要想写出诸如midas,dr5这种高级脚本,是很困难的,但一些简单脚本并不难写,在第二期中,我将手把手的图文介绍如何写一个简单的脚本,如何使用CS制作一个简单的mod,以及一种通用的自动增加魔法或道具的方法。
第一期的回复中,有某人YY天上会掉下个林妹妹,呵呵,在上古的世界里,只有想不到,没有做不到,所以,我们下面要做的魔法名字就叫做:
天上掉下个林妹妹
先看看效果吧:
某日.jpg (404.26 KB, 下载次数: 1196)
某日,我百无聊赖
03:04 上传
某日,我百无聊赖
好无趣啊.jpg (441.61 KB, 下载次数: 1198)
03:04 上传
好无趣啊,老天给点乐子吧!
天上貌似.jpg (313.75 KB, 下载次数: 1189)
03:04 上传
嗯?天上貌似有什么东东。。。
掉下.jpg (232.12 KB, 下载次数: 1186)
03:04 上传
哇!掉下来一个美女,还是。。。全裸的。。。
林妹妹.jpg (343.43 KB, 下载次数: 1185)
03:04 上传
呃。。。居然是。。。林妹妹!!!
呵呵。。。有点意思吧,如果你对这些东东有兴趣,不妨准备好你手头的工具,跟我一起做!
为什么要obse呢,我们的简单mod中没有用到obse的任何附加功能,但作为一个modder,各位打开CS的方式要改变一下,建立一个快捷方式:
obseCS快捷方式.JPG (121.39 KB, 下载次数: 1204)
03:04 上传
以后我们每次双击这个快捷方式来打开CS,这样会让你在CS中拥有OBSE的辅助功能!
首先打开上古4的主esm文件:
cs主文件.JPG (156.51 KB, 下载次数: 1186)
03:04 上传
上古中的脚本有三种:
Object:跟对象绑定的script,什么苹果桔子,家具碗筷等都是Object
Magic effect:魔法效果脚本
Quest:线索任务类脚本
我们的小例子中,将会用到后2种
好,一切就绪,我们正式开始!!!
一:制作新法术
我们需要制作一个mod,新建一个法术,首先找到左边浏览栏的spell标签
新建魔法.JPG (126.31 KB, 下载次数: 1173)
03:04 上传
然后在右边那一堆法术框的任意地方右键,选择new
输入ID和name。name随便写,ID你可以使用aaa开头,这样这个法术会排列在spell列表的上方,方便查找。
Type是类型,我们要增加的是法术,所以选择spell,当然什么次级威能之类也是可以选的
新建魔法2.JPG (99.99 KB, 下载次数: 1173)
03:04 上传
其它都不用动了,注意把右下角的Auto-Calculate勾掉,不要选(我图上忘了勾掉)
这样我们的法术将不会有任何施法限制!
法术新建好了,但它怎么体现作用呢?我们需要的是脚本效果,所以我们要先写script
编辑script.JPG (67.34 KB, 下载次数: 1164)
03:04 上传
新script.JPG (33.27 KB, 下载次数: 1161)
03:04 上传
在打开的编辑框里,我们输入以下三行:
新魔法效果脚本.JPG (45.04 KB, 下载次数: 1156)
03:04 上传
这个脚本没有任何效果,先暂时卖个关子,让大家着力与建设,后面我们再回到这个脚本上来
注意上面script type中要选择Magic Effect,表示这个脚本是魔法效果脚本
好了,保存,关闭
回到我们新作的那个魔法窗口,在右边空白的Effect栏中任意地方右键 -& new
法术script效果.JPG (96.81 KB, 下载次数: 1156)
03:04 上传
effect下拉框中,选择script effect,表示这个法术使用脚本作为效果,还有很多别的,各位有兴趣可以看看
其它的就不用动了,保持默认就好,range表示这个魔法是对自身的,接触类的,或是目标类的
在下面的script下拉框中,选择我们刚写的那个魔法脚本,也就是第一行scn开头的名字,CS会自动把这个脚本添加到
下拉框中,其余不用动了,点OK!
嗯,到这里应该就算基本完成,我们制作了一个法术,并使用一个脚本作为法术效果,现在可以点击保存:
保存.JPG (143.66 KB, 下载次数: 1158)
03:04 上传
然后用OBMM加载,就完成了这个新mod的制作工程!
等一等,等一等!这个法术俺在游戏中怎么用?不会还要用控制台吧,能不能想大多数增加法术的mod一样,自动让俺学会呢?
呵呵,当然可以!下面我使用一种比较通用的方式,教大家自动把魔法或物品添给玩家
二:自动增加
看了一些法术类水晶球类的mod脚本,差不多都使用同一种方法,简而言之,就是借助任务线索,来自动完成物品添加
既然是Quest,那么我们首先要新建一个小Quest
quest.JPG (99.82 KB, 下载次数: 1152)
03:04 上传
这样会打开quest窗口,老方法,任意地方右键 -& new 新建一个
新quest.JPG (61.68 KB, 下载次数: 1157)
03:04 上传
在弹出的编辑框中随便写一个ID,只要自己记住就行
点下OK后,会弹出Quest的详情框
新quest3.JPG (70.23 KB, 下载次数: 1157)
03:04 上传
名字随便写,Priority写上60,默认情况下,Start Game Enabled前面的复选框是勾上的,也就是当你load一个存档或开始新游戏时,此Quest自动生效!
右边,我们又看到了Script字样!
点击三个点的按钮,打开脚本窗,我们用前面的方法再新建一个script,写上如下几行:
自动增加script.JPG (65.35 KB, 下载次数: 1154)
03:04 上传
意思简单解释一下:
1,上面的Script Type记得选中Quest
2:第一行文件名,不用多说
3:fQuestDelayTime为特殊变量,表示脚本执行的频率,我第一期中有详细描述
4:关键来了:“player.addspell aaajokeSpell”,就是这行帮你增加了法术,后面这个ID就是之前我们新做法术的ID
5:增加完了,避免系统开销,aaajokeQuest这个Quest已经可以结束,是填你刚新建Quest的ID哦,不是名字!
完事,保存并退出脚本窗
回到Quest的详情窗,这里CS有个小毛病,刚新增的脚本不会即使刷进script的下拉框,所以,我们先退出详情窗口,然后在双击进去,script中选择我们刚新建的Quest脚本
自动增加script2.JPG (125.13 KB, 下载次数: 1146)
03:04 上传
点击OK后,我们在看一下法术列表:
法术绑定.JPG (64.82 KB, 下载次数: 1148)
03:04 上传
users已经变为了1,说明有1个绑定了!
接近完成了,各位再坚持一下,最后回到我们之前没有写完的法术效果脚本上来,以下是这个简单的脚本:
scn aaajokefalllinscript
ref miss_lin
Begin ScriptEffectStart
Set miss_lin to player.CreateFullActorCopy
miss_lin.SetActorFullName &林妹妹&
miss_lin.RemoveAllItems
miss_lin.PlayGroup idle 1
miss_lin.moveto player 0, 0, 800
1:ref miss_lin
定义一个引用变量
2:Begin ScriptEffectStart
法术执行块,此块会在法术施放的一开始就调用,而且只会调用一次
3:Set miss_lin to player.CreateFullActorCopy
林小姐不过是我们主人公的一个拷贝,这个拷贝包括武器,道具,等级,技能等等所有的东西
4:miss_lin.SetActorFullName &林妹妹&
嘿嘿,原来是叫做“林妹妹”啊
注意,SetActorFullName会改变所有引用对象背后的真实base的名字,因为林妹妹是从你身上拷贝的,所以现在你也叫做“林妹妹”了,呵呵。。。
5:miss_lin.RemoveAllItems
林妹妹被晒光。。。我承认我邪恶。。。
6:miss_lin.moveto player 0, 0, 800
林妹妹从800米高空急速拥抱你。。。
啊,终于收工了!保存esp文件,进游戏看效果喽!!!!!
load完成后,我们看到了熟悉的提示
提示.jpg (104.95 KB, 下载次数: 1141)
03:04 上传
打开物品栏
物品栏.jpg (98.91 KB, 下载次数: 1140)
03:04 上传
呵呵。。。一切都那么自然,是吧,找个空旷的地方接你的林妹妹去吧!!!
主题帖子积分
资深玩家, 积分 17855, 距离下一级还需 145 积分
资深玩家, 积分 17855, 距离下一级还需 145 积分
贡献度3364
[em15] 需要占楼时在下为楼主服务
主题帖子积分
游戏精英, 积分 7320, 距离下一级还需 1680 积分
游戏精英, 积分 7320, 距离下一级还需 1680 积分
贡献度1234
对我来说,这太高端了
我可不可以称LZ为“高玩”[em61]
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
蝎子大的艺术和美工能力,对在下来说才高端呢。。。
主题帖子积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
纯顶纯支持[em31] [em31]
主题帖子积分
游戏精英, 积分 5838, 距离下一级还需 3162 积分
游戏精英, 积分 5838, 距离下一级还需 3162 积分
贡献度1008
那就收藏,留个脚印了。
我想学一点简单的脚本。比如天上掉个林妹妹之类的。。。
好吧我yy了
主题帖子积分
游戏达人, 积分 2272, 距离下一级还需 1228 积分
游戏达人, 积分 2272, 距离下一级还需 1228 积分
支持LZ的教程,虽然感兴趣,无奈英文太差,没法去研究
主题帖子积分
冷场大师【抠鼻党】
游戏精英, 积分 7958, 距离下一级还需 1042 积分
游戏精英, 积分 7958, 距离下一级还需 1042 积分
贡献度1193
标记一下[em61]
& && && && & 我抠...
主题帖子积分
游戏狂人, 积分 1075, 距离下一级还需 925 积分
游戏狂人, 积分 1075, 距离下一级还需 925 积分
收藏一下,也许将来能用的。话说我已不编程好多年……
主题帖子积分
高级玩家, 积分 590, 距离下一级还需 10 积分
高级玩家, 积分 590, 距离下一级还需 10 积分
LZ比官网写的好多了,完全符合程序类的学习规律
主题帖子积分
游戏狂人, 积分 1009, 距离下一级还需 991 积分
游戏狂人, 积分 1009, 距离下一级还需 991 积分
[em61] 教程贴要收下~~
主题帖子积分
游戏狂人, 积分 1479, 距离下一级还需 521 积分
游戏狂人, 积分 1479, 距离下一级还需 521 积分
来上课了!
看了一下楼主的教程,感觉脚本并不难,可以理解。也许难的放在后面了,呵呵。支持你的努力,期待下一个教程。
主题帖子积分
超级玩家, 积分 887, 距离下一级还需 113 积分
超级玩家, 积分 887, 距离下一级还需 113 积分
看到了VB的影子。。。。[em15]
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
附件了一个小补丁。。。自己用着貌似没问题,期待小白鼠
主题帖子积分
金元239181
至少5出来之前不会过气的,5出来也没问题。。因为mod的演化成型需要几年的时间。
主题帖子积分
高级玩家, 积分 470, 距离下一级还需 130 积分
高级玩家, 积分 470, 距离下一级还需 130 积分
本人對腳本 完全不行
但樓主既然指出腳本 主要還是記憶強就可以了
那我也收下 學習學習了
主题帖子积分
游戏达人, 积分 2456, 距离下一级还需 1044 积分
游戏达人, 积分 2456, 距离下一级还需 1044 积分
[em61] 脚本的语法是很简单,脚本真正难的地方是官方和OBSE提供的函数Bug超多,而且还有很多需要注意的使用事项
主题帖子积分
同意18#,上古4脚本麻烦就在函数上
另外没循环估计是怕滥用循环造成执行效率低下以致导致更多的CTD或者干脆系统崩溃~
主题帖子积分
高级玩家, 积分 426, 距离下一级还需 174 积分
高级玩家, 积分 426, 距离下一级还需 174 积分
还好,当年的vb功底还没丢光[em24] 。至少看得懂楼主的语句[em25]
主题帖子积分
游戏精英, 积分 7374, 距离下一级还需 1626 积分
游戏精英, 积分 7374, 距离下一级还需 1626 积分
贡献度1137
学习了。。。老衮的script这么原始啊[em15]
主题帖子积分
游戏达人, 积分 2272, 距离下一级还需 1228 积分
游戏达人, 积分 2272, 距离下一级还需 1228 积分
非常感谢,作为屠城狂人这个太有用了,马上去试刀[em01]
主题帖子积分
游戏精英, 积分 7374, 距离下一级还需 1626 积分
游戏精英, 积分 7374, 距离下一级还需 1626 积分
贡献度1137
对了。。。DR5的子弹时间是怎么回事。。能单独提出来用不[em15]
主题帖子积分
超级玩家, 积分 736, 距离下一级还需 264 积分
超级玩家, 积分 736, 距离下一级还需 264 积分
其实是有循环的
用begin gamemode 或者 beginscriptupdate&&都可以循环 常见的循环方法就是 设一个状态变量
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
回白左大,DR的子弹时间很简单:
强制设置游戏运行时间为0.2
begin gamemode 或者 beginscriptupdate实现的循环是框架内部提供的机制
而不是脚本语言的内建方法,也许开发者压根就不想你在帧内脚本中做循环吧。。。
主题帖子积分
高级玩家, 积分 306, 距离下一级还需 294 积分
高级玩家, 积分 306, 距离下一级还需 294 积分
万分感谢楼主,标记下以后跟进。
头像被屏蔽
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
主题帖子积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
游戏狂人, 积分 1582, 距离下一级还需 418 积分
更新了。。。各位多多捧场啊
主题帖子积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
居然瞬间做出来了,alexn兄乃满意不[em09]
建议将标题加上“天上掉下个林妹妹mod”[em25] [em25]
主题帖子积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
游戏狂人, 积分 1163, 距离下一级还需 837 积分
[em04] [em04] [em04] 发现鸟更新时间,实在感动……
最近6个月内,在3DM论坛独家发布过破解补丁、MOD模组等达10个以上,或者有重要影响力的前述作品
3DM死忠专属勋章
潜行的混沌
萌之委员会(永久)
萌之委员会
Powered by程序员高手和菜鸟的区别是什么?|脚本之家|大不六文章网() </t-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
<meta name="keywords" content="程序员高手和菜鸟的区别是什么?|脚本之家|大不六文章网()
程序员高手和菜鸟的区别是什么?|脚本之家|大不六文章网() </t
来源:微信朋友圈 更新时间: 11:46:13 推荐微信公众号:VC说&&&笑思姐字体:
文章链接:/baihmpgy/p/3790296.html随着做软件的时间越来越长,我发现,做软件越来越难。难在哪?难在怎么做出一个好的软件。好的软件标准是什么?两个词,好用,好看!程序员的最大价值在于做出好用又好看的软件的能力。因此,我觉得程序员的价值绝对不在于技术本身,而在于做出好用且好看软件的能力。这是一个开放性的话题,每一个人都是菜鸟过来的,我希望和祝愿每一个技术人员都能尽快成为高手,也希望更多老鸟来分享经验。在这篇文章,我将根据自己的经验来分享,期望能给人有更多的有帮助的信息。在这里,我只想从技术角度来分析,技术不一定和收入相关联的。1 命名从程序代码的命名,我们就可以看出一个人的水平。最差的命名就是使用中文、拼音、拼音缩写、中英混搭,接下来要么是模仿式命名,要么干脆就随意命名。模仿式命名典型的就是“××DAL”,说实话,我觉得类似于“UserDAL”这样的名字,我觉得太不美观了,一般这我就知道这是典型分层架构的模仿者,说明他是有些经验的人了。随意命名,就是写代码的时候,名字压根就没有意义,比如var list = new List&User&,其实完全可以写成var users = new List&User&的。想要命名的更有意义,你只需要将每一个类、每一个方法、每一个单词的名字都用你开发时的意思直接描述出来就行了。2 模型抽象能力模型决定一个系统的可用性、稳定性、易用性、可维护性、可扩展性!这个模型不是UML建模,而是软件的核心。就是你设计一个软件时,为其所抽象出来的原理性的描述。模型决定一个软件的质量、易用性和扩展性。凡是优秀的软件,都有一个共同特点,就是其模型构建的非常漂亮,当然也有不怎么优秀的软件,模型也很漂亮。微软MEF,我个人觉得其模型构建非常的漂亮和优雅,有兴趣同学可以看看《体验Managed Extensibility Framework精妙的设计》这篇文章。MEF的核心就是组合基元,如下图所示,它简单的定义了动态组合的支持基础,然后一层一层的进行扩展。当然了,因为文章是我写的,我也得得瑟的显摆一下OSGi.NET的设计。可以说,OSGi.NET的设计。OSGi.NET的设计也是类似于MEF,内核很简单,只是为了实现三大功能:动态插件化、面向服务、扩展。不过,我们却可以从简单的OSGi.NET来支撑WinForm、ASP.NET、ASP.NET MVC等任意应用,从简单控制台扩展到iOpenWorks这样的自动化部署与软件生产线平台。它的扩展方式是:WinForm等桌面插件应用 = OSGi.NET + 应用插件ASP.NET应用 = OSGi.NET + WebExtension + Web插件MVC应用 = OSGi.NET + WebExtension + MvcWebExtension + Web插件自动部署 = OSGi.NET应用 + iOpenWorksBundleRepository + iOpenWorksBootstrap + 自动升级插件远程服务 = OSGi.NET应用 + 远程服务宿主插件负载均衡 = OSGi.NET应用 + 远程服务宿主插件 + 负载均衡客户端插件在OSGi.NET之上的任何应用,都是基于组合和扩展的方式,并没有去不断变更OSGi.NET内核本身的代码。此外,OSGi.NET内核能够支持.NET Framework、Mono、.NET Compact Framework,因为它设计的模型非常小,没有用过多的类库支持。3 谦虚随和我们的客户都是一些大的企业,接触了很多各种类型的技术人员。你可以发现一个非常有趣的现象,那些懂得尊重别人、比较谦虚的人经过深入接触后,会发现他们的技术往往都很了不起;而那些说话刻薄无礼,觉得这个技术也不怎样,那个技术没什么了不起的,这个技术没有什么用,我自己的东西已经挺好的,这样的人水平、经验和见识一般都不怎样。软件的问题,并不是简简单单解决一个技术问题,从技术的角度上看,只要学会了使用技术,那么我们就已经掌握了技术,因此,单纯的技术是很简单的。相反的是,软件的协作开发、管理,软件的易用性,软件是否美观,这些东西才是最麻烦的,也往往是技术水平一般、经验短缺的程序员意识不到的东西。我曾经接触过不少一般的程序员,大体都是这一类,他们觉得软件太简单了,没有什么了不起的。对于什么思想,也不屑一顾,他们已经觉得自己掌握了很多真正的技术。4 异常处理与稳定健壮通过异常处理可以看出一个程序员程序设计的严谨与扎实的基础知识。对于Java开发人员而言,会发现每一个方法都有可能需要强制的处理异常和声明这个函数需要处理的异常,这中强制的约束,会强迫开发人员来习惯性的考虑和思考它。不过,对于大部分人来说,它处理异常的方式就是简单的使用try { … } catch(Exception anyException) { // 忽略异常 },用这种方式来捕捉所有的异常信息。这样做的好处就是快,傻,缺点就是一旦出现问题,就不知道问题在哪发生,怎么回事,如果有靠谱的QA还好一些,比如外企,他们都有规范的测试方法和测试流程,一旦发现问题,就会将重现捕捉完整的描述出来给开发者看。不过,在国内没有严格的测试是很正常的,那么出现问题时,就傻了。客户是绝对不可能把出现问题的方式给你完整的Repro的,一旦出现问题,客户会干的就是急眼,那接下来怎么办?你就老老实实加班,老老实实的去猜去找问题。当“try { … } catch(Exception anyException) { // 忽略异常 }”这样的代码充斥整个软件系统时,你就可以想象有多可怕,这个软件能稳定就怪了!我曾经在一个热电公司,在半夜12点,好几个厂家的人聚在热电,等待0点时刻数据采集,一旦数据少了,那么你就麻烦了。我到现场之后,发现有很多开发人员拿个本子,需要不停的看数据库,或者需要将软件Debug打开,然后看看每一个时刻数据是否正常上来。这真是让我喜出望外,因为竞争对手太弱了!!你们的软件在此之前,难道对它7×24小时不间断稳定运行那么没有信心?我们的软件,我通过系统运行过程的消息和日志,我就可以看出所有的东西,如下,消息窗口能够展示系统后台运行的详细过程。此外,还有非常完整的日志,任何异常我都可以找到,并想办法重现。关于异常处理,另一面,就是菜鸟程序员在写代码或者实现功能的时候,一般不考虑反面情况,一个软件按照正常步骤可能能走通,但是一旦出点意外,就麻烦了。以下就是一个典型的代码。If(*****){// ….do something…}这个代码处理了if,但是万一出现else的情况呢?可想而知,系统将会出现无法意料的情况。因此,这也是菜鸟程序员做的系统一般都非常不稳定的一个根源,做程序一般只考虑功能实现,忽略掉意外情况。5 优雅与美观菜鸟程序员并不是缺乏审美,缺乏的是优雅和美观的抽象能力。一个好的系统,要做到两点,好用,好看!因此,这绝对不是单单功能上的堆砌。很多国产软件都深深的烙上了技术人员设计的印子,一看就知道这个软件是出自一个技术人员的设计和实现,一看就知道这个软件的实现过程,这简直是惨不忍睹,不过,各位看官,这就是你们的机遇啊。菜鸟技术人员开发功能的时候,一般都是从实现的角度进行堆砌,怎么简单,怎么来。不会去仔细分析,用户在操作这个功能的时候,到底还会做什么事情,各个功能之间怎么进行有机结合来完整的进行结合。相反,一些技术比较好的程序员往往都要直面客户,经常被客户骂,骂着骂着,也有点觉悟了。当然,也有一些程序员因为自尊,直接不干了。不过,我觉得厉害的程序员基本都有用户意识,也希望自己的软件能有很好的评价,甚至能够影响社会。好用,好看,是软件能够被普遍采用的前提,因此,我们需要学会抽象优雅。6 基础扎实技术知识决定一个人能做的技术的层次。基础的知识有计算机组成原理、计算机操作系统、网络原理、数据库原理、计算机图形学、编译原理、数据结构、离散数学、人工智能等等很高深的理论知识。在这些基础知识之上,就是软件开发语言、类库、框架,面向过程、面向对象、面向服务等编程思想,架构思想等等。这些知识不一定会影响你现在的工作,但一定会影响到你的格局,那格局肯定也会影响到你自身的发展。我碰到过有些理论很差的人,但技术在公司内也是有些影响力的,因此,他们对技术原理就很不屑,甚至为自己不懂太多理论而擅长实战而沾沾自喜。这些人会对那些懂理论,但动手能力一般的人显示出由内而外的鄙夷,但是他们却不知道那些既有基础知识,也有动手能力的高手做出的东西是怎样的。就像我本人,实在是想不通,那些技术天才是如何开发出一个数据库、操作系统这样的软件。因此,如果你已经发觉自己基础不够扎实,那么还是有空就修炼修炼自己的内功吧!7 文档与表达能力很多技术人员都写不了文档。不过,坦白的将,如果要获得更好的报酬,文档时绝对关键的因素。没有文档就没有沟通,就没有交易。有人提了,“文档是第一生产力”,我非常之赞同。文档的类型有很多,针对的对象也各不相同。不同的人,对文档的理解能力也是完全不一样的。因此,你的文档必须适应于你的目标。这个对于搞技术的人太难,他觉得还不如写代码来得快。表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信。因此,也绝对的影响到你的报酬。因为这个能力而影响到你的报酬,你可能会心里觉得亏,但没有办法,这是硬伤,可不仅仅是我只是不擅长写文档,但我擅长与搞技术。如果哪一天,有一个擅长忽悠,技术不如你的人,爬到你的上面并且领导你,那也是该的。千万不要去怪别人擅长忽悠,而是要想办法来弥补自己的硬伤。8 积极的心态技术好的人,一般人都坏不到哪去。很简单的一句话,想要技术好,就要投入时间,有时间投入到技术,那么就没有时间投入到其它方面,特别是消极的坑蒙拐骗,因此,技术人员一般也都比较靠谱。积极的心态,不仅仅对于技术,对于生活也是如此。一旦有了积极的心态,那么菜鸟到高手的过程,仅仅是时间的问题!9 觉得软件不值钱我特别烦的就是做一个软件和一些水平不怎么高的技术人员谈费用的问题。只要是想要做好,每一个哪一个事情是简单的。凡是靠良心和能力谋生的,都是依靠自身的实力来获取合适的报酬,我们每一个人都需要有收入。我也一样的,况且,我还是在技术人员骨子里面认为的那种见钱眼开的“老板”,因此,这就很头大。不过,好在,和我见面的人,都能看出来,我也是做技术的。但是,这依然不能改变一些技术人员认为软件不值钱的想法,他们的理论是,这个功能放我身上,我一天就搞定了,凭什么你要那么多钱?可是,咱们的做法一样吗?一个功能的实现方法有很多种,就像我说的数据采集。如果你的数据采集实现没有以下“1、2、3”这些辅助的功能,后台的实现要简单的多。如果没有指令重试,没有多线程,没有异步刷新,没有7×24小时稳定运行,没有采集数据丢失,没有指令优先级排列,没有多线程和分布式集群采集,没有支持1天1GB数据采集等等这些非功能性的需求。那么这个软件会更简单,我也见过有人用一个控制台,用一个单线程,显示的信息都是完全看不懂的二进制数字,运行一会CPU就100%,内存不断升高的采集软件。这个也算得上是采集软件。不过,菜鸟程序员一般都会按照自己的做事方法来对软件进行评估,如果没有好的经验,一般都会认为软件很不值钱。事实上,做好看的、好用的软件非常难,做好看、好用、还要好维护以扩展的软件那就是难上加难。还有一个几年前碰到的软件定制,有一个人直接说了,这是简单的CRUD,一个页面200元,你算算这个系统值多少吧,我现在都害怕跟这些人打交道,也害怕做业务软件定制了。曾经也见到一个数据采集软件,软件负责人说,他们这个软件一个月3个人就实现了,而我告诉他我们需要更多人手,更多时间,然后他非常不屑。最后,我就想看看他们的软件,他打开让我看看,我在一个TextBox里面没有输入信息就点击一个按钮,然后系统竟然直接崩溃,抛出异常。看完我就笑着说了,我们不做这种通过拖拉控件直接数据绑定的软件,我们需要做出一个好用且好看的软件,能够容易追溯、容易跟踪状态且支持多线程和分布式集群部署的软件。软件是一个充满智慧结晶的劳动成果,如果说的高尚一点,有些软件时无价的,当然我做的软件不是这样的层次!10 工资这点显而易见!工资是价值的体现,我祝福每一个点“赞”的人,很快都能涨工资!那些不点“赞的”……,呵呵,你还是点“赞”了吧!长按下方图片识别二维码 &关注脚本之家脚本之家(jb51net)  查看原文  分享到微信  文章为作者独立观点,不代表学网文章网立场
刺激的、精彩的你想不想看,关注公众号vcshuo ( 公众号搜索:VC说)
笑死不偿命,露骨美女帅哥诱惑你,关注公众号xiaosijiea ( 公众号搜索:笑思姐)
最新添加资讯
24小时热门资讯
Copyright &#169; 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号}

我要回帖

更多关于 压力测试脚本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信