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

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

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

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

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

呵呵,楼主的观点有点意识啊。。
现在的电视机每个键都集成了众多功能,按你的意识,电视厂家应该把每个功能都设置一个相应的按键?
for 的嵌套不是你想的简单的简短,你不能看懂的代码也并不代表代码的可读性差。
你不能因为你无法把刀拔出鞘就说鞘是多余的是不合理的。
技术问题请到论坛发帖求助!

TOP

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

心在天山,身老沧州。

TOP

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

TOP

具体问题,具体分析
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

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

心在天山,身老沧州。

TOP

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

评分人数

    • yangfengoo: 我就喜欢干第四条 以后注意PB + 8
    • 随风: 我太赞同了!PB + 5
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不是的啊.!
披星戴月

TOP

学习VB中

支持楼主~~~~~~~~

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

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

TOP

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

TOP

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

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

TOP

14# plp626


有道理,以后会注意。

TOP

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

TOP

返回列表