CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
こんにちは、吉政創成 菱沼です。
今回も「きれいなPythonプログラミング(マイナビ出版)」という書籍を利用して学習します。
現在学習中の5章「怪しいコード臭」では、バグを未然に防ぐために、どういった点に注意した方が良いのか、対処するか否かの判断について学んでいます。
今回も前回に引き続き、コード臭の迷信について学びます。
まずはグローバル変数についての項目になります。
---------------------------------------------------------------
P.87
迷信:グローバル変数はダメ
関数やメソッドは、プログラムの中のミニプログラムのようなもので、関数が戻ると捨てられてしまうローカル変数を含んだコードです。これは、プログラムが終わると変数の値がすべてなくなってしまうのと似ています。関数は独立していて、そのコードは呼び出されたときに渡された引数に応じて、正しく動作したりバグが発生したりします。
ところが、グローバル変数を使用する関数やメソッドでは、この便利な分離機能が失われます。関数内で使用しているグローバル変数は、引数と同じように、事実上別の入力になります。引数が増えると複雑になり、バグが発生する可能性が高くなります。グローバル変数の値が悪かったために関数にバグが発生した場合、その値はプログラムのどこにでも設定できる可能性があります。その原因を探るには、関数内のコードや関数を呼び出した行だけではなく、プログラム全体のコードを見なければなりません。このような理由から、グローバル変数の使用を制限する必要があります。
---------------------------------------------------------------
なるほど。グローバル変数とローカル変数の範囲は確かに違うので、バグの原因探しをするときにはグローバル変数だと苦労しますね。
とはいえ、グローバル変数はダメな子というわけではなく、使い方を選ぶ必要があります。
---------------------------------------------------------------
P.88
なお、グローバル定数は、プログラミングの手法としては決して悪いものではありません。グローバル定数は値が変化しないため、他のグローバル変数のようにコードが複雑になることはありません。プログラマーが「グローバル変数はダメだ」と言うとき、それは定数変数のことではないのでご注意ください。
(中略)グローバル変数を多用することはよくありません。しかし、すべてのグローバル変数が悪であるという考えは迷信です。グローバル変数は、小さなプログラムや、プログラム全体に適用される設定を把握するのに便利です。グローバル変数を使わずに済むのであれば、それはグローバル変数を使わない方がよいということでしょう。
---------------------------------------------------------------
グローバル定数は値を変えないと決めた変数(慣習的に大文字スネークケースで記述)なので、値が変わる可能性があるグローバル変数とは取り扱いが異なります。
本題のグローバル変数についてですが、引用文には、小規模なプログラムや全体に適用される設定と書かれています。例えば、Webサイトで設定が掛かれているconfig.pyのような設定ファイルなどのあまり変動しない設定を書くときや、ファイルパスを書く場合などによく利用されるようです。
つまり、実際にはグローバル変数を使うというより、グローバル定数として使うのが無難で安全だということなのだと思います。
次はコメントに関する迷信です。これも全文通すとなんだか闇を感じますが、必要な個所だけ引用します。
---------------------------------------------------------------
P.86
迷信:コメントは必要ない
拙いコメントは、コメントが書かれていないよりたちが悪いです。古い情報や誤解を招くような情報を含んだコメントは、理解を深めるどころか、プログラマーの負担を増やすことになるからです。
(中略)
実際に問題が起こる時、コメントを書きすぎていたり誤解を招くようなコメントが書かれていたりする場合よりも、コメントが少なすぎる、あるいは全くないという場合の方がはるかに多いのです。非常に少ない場合の例を理由にコメントを拒否するということは、「旅客機で大西洋を横断するのは99.99991%しか安全ではないので、代わりに泳いで横断します」と言っているようなものです。
---------------------------------------------------------------
きっとなにか苦労したんだろうなぁ...という様子がうかがえますが。
具体的なコメントの書き方は10章で説明されるため、ここでは詳細は省かれますが、とにかく、コメントはなしで良いものでも、ただ書けばいいというものでもない、内容を必要な分だけしっかり書いて!ということですね。
ちなみに最近はコメントを減らすため、変数名や関数名に、明確な用途が分かるような名前を付けたり、複雑な処理をいくつかの関数に分割して書くことで何のための関数なのかを解りやすくしたりといった手段をとることもあるようです。
書かないなら書かないでもいいけど、書かないならわかりやすいプログラムにして!ということなんでしょう。
それでは今回はこちらで終了です。次回は「6章:パイソニックなコードを書こう」に入ります。
今回もお付き合いいただきありがとうございました。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes