[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理bat代码是越短越好吗?

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

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

      如有其它观点,欢迎讨论。

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

QQ 20147578

TOP

回复 1# myzwd


    代码越短越好,是有个前提条件的,同样可以实现的功能,同样的效率,人家用10万行代码搞定,你用了100万行代码实现功能,代码效率一样高。这种情况下,代码越短就越有优势了。哈哈

TOP

说白了就是个“度”的问题,不刻意简短化,不刻意模块化就对了

TOP

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

我想知道有这些习惯的人写那种几十行或者几百行的代码的时候是怎么处理的,如果其中一个地方出错了,找起来不是更痛苦。不利于人也不利于己。
心累~努力,为了美好的明天。

TOP

学习中,不做任何评论!

TOP

回复 10# ZJHJ
改成16进制怎么改呢?是不是16进制的执行效率高一些呢?

TOP

以后会注意的,...

TOP

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



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

TOP

写代码,算法和注释都很重要。
一生的努力,才能求的灵魂的安宁。

TOP

14# plp626


有道理,以后会注意。

TOP

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

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

TOP

算法是关键!
代码书写次要。

TOP

不是越短就好吧? 关键得看实用不

TOP

批处理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 七次循环快一倍以上的哦!

TOP

返回列表