Board logo

标题: [其他] 批处理bat代码是越短越好吗? [打印本页]

作者: myzwd    时间: 2009-4-4 22:18     标题: 批处理bat代码是越短越好吗?

bat代码是越短越好吗?
                 我以前也是这样认为,我认为短的代码比长的好,但是我发现这个观点很错。
因为程序好不好就是要看它的效率和可读性,和可维护性。
在今天的电脑,硬件都非常的好,bat的效率,已经不在是一个问题了。
但是bat的可读性,和可维护性确大有问题。比如说随便抓一个bat程序,3,4个for嵌套在一起,是常便饭,比比皆是。其实很多bat都可以分成若干子程序模块,把它们拼在一起就可以了。但是为了一个短,就不断的用for嵌套,
最后成了一个只有作者自己能读懂的程序。或者说成了一个短小但及其难读懂的bat。

            现在这个时代流行的是面向对象的编程思想,所以我个人认为我们应该去接受那种结构化的编程思想,尽量使编写的bat代有这个时代的风貌----结构化的风格,让更多的人能够读懂代码,让bat更容易维护,抛弃单纯最求效率,最求短小这种与时代的脱节的编程思路。

      如有其它观点,欢迎讨论。
作者: 随风    时间: 2009-4-4 22:35

呵呵,楼主的观点有点意识啊。。
现在的电视机每个键都集成了众多功能,按你的意识,电视厂家应该把每个功能都设置一个相应的按键?
for 的嵌套不是你想的简单的简短,你不能看懂的代码也并不代表代码的可读性差。
你不能因为你无法把刀拔出鞘就说鞘是多余的是不合理的。
作者: namejm    时间: 2009-4-4 23:25

  1、凡事都应有个度,要适可而止;
  2、代码好不好,需要综合各方面的因素来考虑,而不应仅仅以长短论英雄;
  3、代码短小精悍,确实是很多程序员毕生追求的化境,但这都是有前提条件的:只有在代码能准确解决问题,并且能高效率地完成工作的时候,再追求短小精悍才是有意义的;假设代码的执行结果是错误的,或者原本只需要两三分钟就可以解决的问题,你偏偏要绕个大大的弯路,用几条代码让机器跑上两三个小时才能解决,这个时候,短小精悍就失去了意义;
  4、若是大型工程,确实需要对可读性、可扩展性有极高的要求;但是,如果事情很简单,只需要几行代码就可以解决的时候,若你还要给每条语句加上注释(考虑可读性)、费尽心思设计多个功能模块(方便日后扩展),则未免得不偿失;
  5、三、四个for嵌套在一起,往往是为了有效利用动态产生的变量值,或者是为了避免生成临时文件,很多时候,若要把它们拆分开来,往往会浪费内存,或是要产生一些临时文件,这是高水平的程序员最不希望看到的情形;也许很多人会说,现在的内存动不动就是1G、2G,硬盘都是海量空间,几十M、上百M的内存占用,一两个的临时文件,我不在乎,可是,用户的系统资源并不只是为了运行你编写的那一两个程序吧?大家也不希望自己的杀毒软件一直在后台以90%的CPU占用在狂奔不已吧?我认为,最大限度地节约用户的系统资源,应是真正的程序员一直需要关心的问题,不能说有海量资源就可以任意浪费。
  6、抛弃单纯追求最短小的想法是很正确的,但是,若要放弃代码的效率,则是不能原谅的——没有了效率的代码,一切都是空谈——你也不希望打开word程序需要半个小时的时间吧?你也不想做个加减法运算要让你等上十分钟吧?
作者: wangjmh    时间: 2009-4-5 12:38

程序的好坏并不以代码长短而论,除去程序的可行性外,我认识最重要的就是程序的算法,虽然现在计算机的硬件的发展已经达到了相当高的程度,但人人都想花费最少的资源来得到最多的回报。因此,为了程序的效率,多写或少写两行代码又何妨。另外,为了程序的修改和维护,必要的注释和程序的结构模块化也是必不可少的。
作者: BBCC    时间: 2009-4-5 14:56

具体问题,具体分析
作者: namejm    时间: 2009-4-5 15:01

  其实选择算法的最主要目的是为了提高代码的执行效率,兼有提高程序通用性的功效,另有若干其他目的。有时候,多写一两行代码反而能显著提高代码的效率,这个时候,就不应该再去追求所谓的短小精悍。我不否认需要做必要的注释,也没有否认结构需要模块化,而是说,凡事都需要有个度,需要适可而止,并且,代码的好坏,并不是仅有长度这个唯一的衡量标准,而是需要综合考虑:为了执行效率,可以牺牲部分长度;若有了执行效率,则应考虑精简代码、增加代码可读性或代码的可扩展性;但是,如果注释满天飞、动不动就call调用模块,则未免太过浪费。
作者: Batcher    时间: 2009-4-6 11:29

看到就想吐的几种代码:
1、没有任何缩进,所有代码顶格写;
2、N个for循环嵌套写在一行,既不换行更不缩进;
3、N个if并排着写,看似所谓的“清晰”,实则重复;
4、动不动就把N个命令用&、&&、||连接起来,也不管有没有必要;
作者: xpclient    时间: 2009-4-6 11:42

不是的啊.!
作者: czjt1234    时间: 2010-8-21 17:09

学习VB中

支持楼主~~~~~~~~
作者: ZJHJ    时间: 2010-8-24 21:28

批处理bat代码一般处理小型文件确实不容易看出用时的效率。如果是大型文件,要十多或更长时间。。。。。,恐怕你的耐心就。。。。。。
我的肤浅感觉是:
1, 尽量减少直接写入
2, 尽量减少for循环
3, 尽量减少goto循环
我的意思是能够不用或其他方式可以实现功能结果,多几个代码效率会提高2~3倍以上甚至几十倍哦!
如果有1万个9位数(空格格开,每行不大约8180字节)
用下面的代码处理你会感觉效率怎么样?
1,
cd.>temp.txt
for /f  "delims=" %%i in (%file%) do (
  for %%a in (%%i) do echo %%a
)>>temp.txt
2, cd.>temp.txt
for /f  "delims=" %%i in (%file%) do (
  for %%a in (%%i) do echo %%a>>temp.txt
)
也许是30倍的差异.(有点夸张哦)
如果要转化成十六进制,部分代码是:
1,
for /l %%i in (1 1 7) do (
    set /a y=!y!/16,  ys=!y!/16%%16
    call set h=%%m:~!ys!,1%%!h!
)
2,
:bb
    set /a y=!y!/16,  ys=!y!/16%%16
    call set h=%%m:~!ys!,1%%!h!
if !y! GTR 0 goto bb
大家可以试一试一样不?
还有比for 七次循环快一倍以上的哦!
作者: laohu_50    时间: 2010-12-13 12:27

不是越短就好吧? 关键得看实用不
作者: applba    时间: 2011-4-23 11:40

算法是关键!
代码书写次要。
作者: CrLf    时间: 2011-4-23 12:13

看到就想吐的几种代码:
1、没有任何缩进,所有代码顶格写;
2、N个for循环嵌套写在一行,既不换行更不缩进;
3、N个if并排着写,看似所谓的“清晰”,实则重复;
4、动不动就把N个命令用&、&&、||连接起来,也不 ...
Batcher 发表于 2009-4-6 11:29

除了第一条,其他三条好像都是我最喜欢干的...不过我这么写代码之前会推敲一下,因为很多时候难看的代码确实非常简洁高效,尤其是代码只有短短一两句的时候,可读性是不太需要关注的
作者: CrLf    时间: 2011-4-23 15:12

14# plp626


有道理,以后会注意。
作者: wpNature    时间: 2011-7-8 16:01

写代码,算法和注释都很重要。
作者: 小胖狐狸    时间: 2011-11-9 16:03

有些人爱显摆,爱炫,像过去刚刚入门的肤浅的我;就喜欢超级短小的,但只有自己当时能看懂,过后连自己 ...
plp626 发表于 2011-4-23 14:17



    顶,效率第一没问题,短小精悍没问题,问题就是一定要有注释,一定要详细注释!否则自己编写的时候很清楚明白,过后一段时间,可能自己都要推敲半天才能知道自己这段代码是什么意思,更不要提别人了
作者: chinatree    时间: 2011-11-10 16:35

以后会注意的,...
作者: bathhome    时间: 2013-1-8 01:46

回复 10# ZJHJ
改成16进制怎么改呢?是不是16进制的执行效率高一些呢?
作者: wybdlut    时间: 2013-4-7 20:54

学习中,不做任何评论!
作者: 尘丶    时间: 2015-10-10 22:51

看到就想吐的几种代码:
1、没有任何缩进,所有代码顶格写;
2、N个for循环嵌套写在一行,既不换行更不缩进;
3、N个if并排着写,看似所谓的“清晰”,实则重复;
4、动不动就把N个命令用&、&&、||连接起来,也不管有没有必要;

我想知道有这些习惯的人写那种几十行或者几百行的代码的时候是怎么处理的,如果其中一个地方出错了,找起来不是更痛苦。不利于人也不利于己。
作者: winload    时间: 2015-10-11 17:09

说白了就是个“度”的问题,不刻意简短化,不刻意模块化就对了
作者: bat_521    时间: 2024-3-13 16:00

回复 1# myzwd


    代码越短越好,是有个前提条件的,同样可以实现的功能,同样的效率,人家用10万行代码搞定,你用了100万行代码实现功能,代码效率一样高。这种情况下,代码越短就越有优势了。哈哈
作者: czjt1234    时间: 2024-3-13 19:32

我觉得有一个标准是毋庸置疑的
那就是过两三个月,你再来看你自己写的代码,看得舒服吗,能迅速看懂吗?
是不是规范格式,加点备注会好点?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2