这篇文章是阅读并遵循LOLCODE规范1.2(“吸烟手册”,对吗?)并在compileonline.com上编写和执行我的代码的结果。会变得嘶哑。我之所以喜欢它,是因为它很好地说明了语言的基础-变量,运算符,循环,条件等。一路走下去,以便稍稍简化一下阅读-至少可以这样说,否则该语言在眼睛上有点苛刻。是-这是我的第一个也是最后一个lolcode程序。我是否忽略了有助于可读性的语言构造?命名如何?缩进?有问题吗?

HAI 1.2

    I HAS A Fizz ITZ 3
    I HAS A Buzz ITZ 5

    IM IN YR FrootLoopz UPPIN YR Frootz TIL BOTH SAEM Frootz AN 100 
      BTW Frootz runs 0 through 99

      I HAS A Froot ITZ SUM OF Frootz AN 1
        BTW Froot will run 1 through 100

      BOTH SAEM 0 AN MOD OF Froot AN PRODUKT OF Fizz AN Buzz
      O RLY?
        YA RLY
          Froot R "FizzBuzz"
        NO WAI
          BOTH SAEM 0 AN MOD OF Froot AN Fizz
          O RLY?
            YA RLY
              Froot R "Fizz"
            NO WAI
              BOTH SAEM 0 AN MOD OF Froot AN Buzz
              O RLY?
                YA RLY
                  Froot R "Buzz"
              OIC
          OIC
      OIC

      VISIBLE Froot

    IM OUTTA YR FrootLoopz

    VISIBLE "DOWN WITH FIZZBUZZ LOL"

KTHXBYE


评论

我期待的是CHEEZE和BURGER,而不是FizzBu​​zz。

关于用玩笑语言编写的代码的认真代码审查?并询问所述代码的惯用性?有时我想知道这个地方。

@fluffy我也开始想知道,对此我们有一个元问题。

#1 楼

我喜欢您如何将Fizz和Buzz声明为“常量”。它使代码更易读。

注释也很有用,但是为了保持一致,第二个注释应从以下内容更改: >



BTW Froot will run 1 through 100


Froot生成Frootz的想法也是很好的,因为它减少了代码后面的计算。 />
我只希望您使用比Frootz更好的名称,因为它与Froot冲突。相似之处是...。不可思议。

我建议使用Loopz名称:

BTW Froot runs 1 through 100


这样可以减少歧义,并改善可读性和可维护性。

最后,最好将Fizz取模检查放在Buzz检查之前,因为这样可以提高性能。许多人把嗡嗡声放在第一位,但这意味着以5模进行检查,并且比以3模进行检查的失败更多,因此首先进行Buzz循环的人往往会进行约20%的条件检查。 >
首先,您的结果给我留下了深刻的印象。我等不及要在lolcode中实现fim ++解释器。到那时!

评论


\ $ \ begingroup \ $
给定名字,回答这个问题很合适。
\ $ \ endgroup \ $
–user22048
2014年8月29日在23:02

\ $ \ begingroup \ $
这里的决定很艰难,我给你打个勾。在循环外发出嗡嗡声。
\ $ \ endgroup \ $
–马修·金登(Mathieu Guindon)♦
2014年8月30日13:15

\ $ \ begingroup \ $
我必须检查并确保fim ++仍然不存在。 ew。再安全一年。
\ $ \ endgroup \ $
–RubberDuck
16 Dec 15'在10:43

\ $ \ begingroup \ $
@RubberDuck什么是fim ++?
\ $ \ endgroup \ $
–airlandingheringaahing
17年4月27日在21:17

\ $ \ begingroup \ $
@ user00001亲爱的公主Celestia ... esolangs.org/wiki/FiM%2B%2B
\ $ \ endgroup \ $
–RubberDuck
17年4月27日在21:45

#2 楼

我真的不敢相信我现在正在审查lolcode。因此,小写变量会更惯用,但为了便于阅读,我会使用camelCase。

Frootloopz是有创意且惯用的,但是Froot除了与Frootloopz无关之外,没有任何意义。 Loopz仍然是惯用语,而counter则更有意义。

如@Pimgd所述,可以通过将O RLY?, YA RLY放在一行上来减少嵌套。
代码既可以计算也可以打印。 LOLCODE支持功能。我将用它来分离关注点。特别是因为这是学习语言的练习。


函数以开始关键字HOW IZ I和结束关键字IF U SAY SO标记。语法如下:

HOW IZ I <function name> [YR <argument1> [AN YR <argument2> …]]
     <code block>
IF U SAY SO



#3 楼

缩进

您已经使用了这样的结构:

O RLY?
    YA RLY
        Froot R "Buzz"
OIC


我不太喜欢。它具有额外的缩进级别。相反,我会选择执行以下操作:

O RLY?, YA RLY
    Froot R "Buzz"
OIC


您确实在一行上获得了多个语句,但是我会看到IZ WIN(对于那些LOLCODE的人来说,是== true -缺乏经验)作为if语句的一部分。我想应该是这样的

  I HAS A Froot ITZ SUM OF Frootz AN 1
    BTW Froot will run 1 through 100


因为没有按变量分配的缩进级别。 > 100应该是一个常量,其名称描述其含义。诸如FIZZBUZZLIMITMAXFIZZBUZZNUMBR之类的东西。甚至STAHP ...,但是描述性可能不如其他名称。

评论


\ $ \ begingroup \ $
您还叫数字100吗?匈奴
\ $ \ endgroup \ $
–RubberDuck
2014年8月29日14:31

\ $ \ begingroup \ $
@RubberDuck限制,MaxLines,金额...这与值无关,而与上下文有关。那100可能是1000或250或1337。您何时要停止FizzBu​​zz?
\ $ \ endgroup \ $
– Pimgd
2014年8月29日14:53

\ $ \ begingroup \ $
确保您没有提出这个建议。 codereview.stackexchange.com/q/44047/41243
\ $ \ endgroup \ $
–RubberDuck
2014年8月29日14:55

\ $ \ begingroup \ $
我谨建议变量名称STAHP
\ $ \ endgroup \ $
– Mike G
2014年8月29日在18:31