【问题标题】:Oganizing Batch Code组织批处理代码
【发布时间】:2015-10-19 18:10:19
【问题描述】:

我尝试过的所有搜索,但我不能孤单你的代码清晰易读。

目前我的编码要么是尝试缩进的随机数组,要么是完全没有缩进的平线编码。

有没有人知道任何关于如何停止意大利面条式编码和单调编码的链接、一般规则或示例?

【问题讨论】:

  • 我知道缩进实际上很重要的唯一语言是Python。只要坚持下去,最终你就会形成自己的风格。
  • 在此处发布您的代码 - codereview.stackexchange.com
  • 缩进非常适合直观地组织代码,我总是use them。还可以考虑将代码分成几个批处理文件。
  • this post 给出的编码风格建议也可用于批处理文件。
  • 但需要注意的是批处理不支持内联 cmets。

标签: batch-file indentation organization


【解决方案1】:

几年前我学到的一件事是对你们的 cmets 慷慨。不仅适用于您自己,也适用于任何将审查您的代码的人。我通常只会在文件的开头插入一个注释来描述批处理文件的主要功能是什么,以及一些功能,只是为了解释将要发生的事情或正在发生的事情。至于缩进,通常应该缩进诸如 IF 或 FOR 之类的东西。这是一个简单的例子。 :: 检查当前登录用户的用户名。

@ECHO OFF

:: Declare variables
SET Something=abc
SET SomethingElse=def
SET FinalNumber=20

:: Start of batch file

:GetUsername
:: Get username of currently logged in user, and output to file
CLS
ECHO %USERNAME%>Test.txt

:CheckAdmin
:: Check if username = Admin, Echo numbers in a FOR loop
CLS
IF "%USERNAME%" EQU "Admin" (
    ECHO Admin is currently logged in
    ECHO Printing numbers 0-%FinalNumber%
    FOR /L %%I IN (0,1,%FinalNumber%) DO (
        ECHO %%I
        ECHO %%I>>Test.txt
    )
) ELSE (
    ECHO Admin is not logged in
    ECHO Printing numbers %FinalNumber%-0
    FOR /L %%I IN (%FinalNumber%,-1,0) DO (
        ECHO %%I
        ECHO %%I>>Test.txt
    )
)
:: Wait 5 seconds, than loop through again, because why not?
ECHO %Something%
ECHO %SomethingElse%
TIMEOUT>NUL /T 5
GOTO :GetUsername

虽然我不是“专家”,但希望这有助于为您解决一些问题。如您所见,对于 cmets,我更喜欢使用 :: 而不是 REM,并且我还在各种功能上设置了标签 :GetUsername。有人会说这是对的,这是错的,我觉得随心所欲。

【讨论】:

  • 我建议你不要在 cmets 中使用双冒号。没有一个理由这样做,但有几个理由不这样做!更多详情请访问stackoverflow.com/questions/16632524/…
  • 首先,感谢 Blizfrost,我一定会使用更多的 cmets,而不是专注于缩进 所有内容。 Aacini 我读了那篇文章,但我不明白为什么“:: Comment”不好,它只是讨论了如何忽略任何无效标签以及 :: 如何无缘无故地流行,以及证明你不能意外“转到: one" 如果 "::one" 是评论。
  • 没问题,据称根据This,如果您在代码的某些位置插入:: 注释,则会导致语法错误。虽然我确实喜欢 cmets,但我通常会在标签之前或之后坚持评论。不,没有必要缩进所有内容,但是由于缺少提供的代码,我无法告诉你我在哪里缩进你的代码,我不会在哪里缩进。正如我所说,您应该只在 IFFOR 内缩进代码就可以了。
【解决方案2】:

我想说,你能做的,是你可以把一些部分作为一个位,像这样:

@echo off
echo Hello. Type in your name.
set /p "name"
if %name%==bob123 goto login
if %name%==joe321 goto login

然后,在另一部分,更多的部分。

【讨论】:

  • 哈,虽然可能已经晚了,但我(希望)已经改掉了我的坏习惯,并开发了一种(希望)可读的编码风格。但是我看不到这个答案是如何工作的,没有评论包含,通过命令rem,无效标签::,或跳过goto :label。同样,您忘记了= 登录到您的set /p 命令。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2014-01-29
  • 1970-01-01
相关资源
最近更新 更多