teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

Javaの話とか追

2017/08/07 07:05

投稿

raccy
raccy

スコア21767

answer CHANGED
@@ -20,4 +20,6 @@
20
20
 
21
21
  主たるほとんどのコーディング規約では、一行の場合の波括弧(`{}`)省略を完全には禁止していないようです。ただ、if-elseで片方だけ付けるとかは禁止している場合もあります。Linux kernel coding styleは聖典K&Rになるべく忠実になるようにしています(そう、K&Rが正しいのです)。
22
22
 
23
- `!`については、`strcmp()`特有の話だと思われます。(実際は`int`ですが)真偽値を返すと期待されるような関数(`isalpha()`など)や失敗時に`NULL`や成功または失敗時に`0`を返す関数(`malloc()`など)において、`!`を使うことはおかしくも何もありません。しかし、`strcmp()`が返すのは真偽値ではありません。この関数は小さい時、同じ時、大きいときにそれぞれ-1, 0, 1を返します。`!strcmp(a, b)`はaとbが同じ時に真となりますが、ぱっと見どちらなのかわかりにくいです。それよりも`strcmp(a, b) == 0`の方が、strcmpが0になるとき、つまり、同じ時に真であると理解しやすいと考えられています。
23
+ `!`については、`strcmp()`特有の話だと思われます。(実際は`int`ですが)真偽値を返すと期待されるような関数(`isalpha()`など)や失敗時に`NULL`や成功または失敗時に`0`を返す関数(`malloc()`など)において、`!`を使うことはおかしくも何もありません。しかし、`strcmp()`が返すのは真偽値ではありません。この関数は小さい時、同じ時、大きいときにそれぞれ-1, 0, 1を返します。`!strcmp(a, b)`はaとbが同じ時に真となりますが、ぱっと見どちらなのかわかりにくいです。それよりも`strcmp(a, b) == 0`の方が、strcmpが0になるとき、つまり、同じ時に真であると理解しやすいと考えられています。
24
+
25
+ なお、これらはC/C++特有であることに注意してください。例えば、Javaでのifでは[Code Conventions for the Java Programming Language](http://www.oracle.com/technetwork/java/codeconvtoc-136057.html)でも[Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)でも波括弧は省略すべきでは無いとされています。また、PerlやGoのようにそもそも省略できない言語も存在します。

2

s/判例/凡例/g

2017/08/07 07:05

投稿

raccy
raccy

スコア21767

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  [LLVM Coding Standards](http://llvm.org/docs/CodingStandards.html)|●|●
9
9
  [C++コーディング規約 [Robotics with Linux]](http://robolin.jp/wiki/cpp-style-guide)|×|-|
10
10
 
11
- 例:
11
+ 例:
12
12
  ◎推奨
13
13
  ○可
14
14
  △非推奨

1

必須とは言えないかな?

2017/08/07 06:56

投稿

raccy
raccy

スコア21767

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  [C++コーディング規約 [Robotics with Linux]](http://robolin.jp/wiki/cpp-style-guide)|×|-|
10
10
 
11
11
  判例:
12
- 必須
12
+ 推奨
13
13
  ○可
14
14
  △非推奨
15
15
  ×禁止