コード書くときはインデントはちゃんとやろう

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

コードを書いているときは、ちゃんとインデントはやっているだろうか?アプリの開発などを行っているときでコーディングをしているときは適切なインデントを行うということは基礎中の基礎レベルのことである。

例えば、以下のコードがあったとしよう。

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
string readline() {
string str;
getline(cin, str);
return str;
}
vector<string> split(const string &str, char sep) {
vector<string>; vec;
istringstream sstream(str);
string buf;
while (getline(sstream, buf, sep)) {
vec.push_back(buf);
}
return vec;
}
int main(void){
const auto nums = 2;
int selected = 0;
int max_performance = 0.0;
for (int cnt = 0; cnt < nums; cnt++) {
auto arr = split(readline(), ' ');
float performance = stof(arr[0]) / stof(arr[1]);
if (performance > max_performance) {
selected = cnt;
max_performance = performance;
}
}
cout << selected + 1 << endl;
return EXIT_SUCCESS;
}

これは以前行われていたPOH7のツインテールのお題のC++コード ((元コードはpaizaオンラインハッカソン7に参加してみた – ツインテール(C++, Swift)及びhttps://github.com/saitomarch/POH7/blob/master/cpp/twin_tail.cppを参照)) のインデントを全部消して平坦なコーディングにしただけのコードなのだが、これでさえどこからどこまでがブロックなのか難解なものになってしまっている。もっと長いコードでこれをやられてしまったら迷惑極まりないものになってしまう。

当方の場合もこのブログで記事中にサンプルコードを書いた際に意図せずにこういう状態になってしまったことがあった。これもダメなのだが、意図的にこれをするのは正直なところ「一体何を考えているのだろうか」と首を傾げざるをえないだろう。

なお、近年のIDEではかなり強力になったためか、コードをコピペするときに自動的にインデントも整形してくれるというものもある。

なお、PythonではC言語でいう{…}がない代わりに、インデントがブロックを分ける重要な要素となっており、インデントがなされていないと文法違反となる。

Pythonに限ったことではないが、ちゃんとインデントは使おう。

タイトルとURLをコピーしました