やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

setUp()ってなんだよ Pythonは標準ライブラリでさえ命名規則を破るクソ言語である

 setUp()とは、Python単体テスト用パッケージにおける初期設定用メソッド名だ。これをみて、思うことはないだろうか? そう、命名規則だ。スネークケースではないのだ! set_upでもsetupでもない。setUpだ。

 ウソだろ? なぜここでキャメルケースなんだよ。pep8を守れや! お前を使ったら俺がpep8を守れないんだよクソが! 俺たちユーザが必死こいてtest_*のようにスネークケースで書いてもお前だけキャメルケースじゃねーか。ふざけんな! 改名しろ! 地獄に落とすわよ!

 なに? 「一貫性にこだわりすぎるのは、狭い心の現れである by pep8」だと?!

 だったら最初から俺らにスモール・スネーク・ケースで書けとか言うんじゃねーよカス! ケンカ売ってんのか!

 なんだよ、俺か? 俺が悪いのか? 俺の心が狭いから悪いのか? 俺の精神の問題なのか? 俺が寛容であればいいのか? 多様性を認めろと?

 いや、だったらpep8、てめーはなんのためにいるんだよ! コードに統一性をもたらすためだろうが! 多様性を許しちゃったらお前の存在意義ないだろ! 俺たちの精神が悪いとか責任転嫁してんじゃねーぞハゲ!

 サードパーティ製のライブラリじゃないんだぞ? 公式がほこる標準ライブラリだぞ? 自分で定めたルールも守らないクソコードを標準にしてんじゃねーよボケが!

 標準ライブラリにpep8を求めるのはまちがっているだろうか?

 俺のコードが統一されないのはどう考えてもお前らが悪い。

 やはりお前らのコードはまちがっている。

 ありふれたクソコードで異世界最低。

情報源

pep8を無視する標準ライブラリ

 Pythonのメソッド名はPEP8によってsmall_snake_caseに決まっているはず。なのに公式の標準ライブラリであるunittestのお前がそれを破るのか……。そしてやつらはこういうのだ。「一貫性にこだわりすぎるのは、狭い心の現れである」と。いや、せめて標準ライブラリは統一しろよ。それすら守らないようなルールなのか? だったらお前はなんのためにあるんだよ。死ね。

 ていうかケンカ売ってるだろ。こっちには守れとかいっておきながら、お前らはやらないんかい! それじゃ意味ないだろ。お前は政治家か! こっちにだけ自粛しろと要求しておいてお前らは自粛せずヤりたい放題じゃねーか!

統一されていない標準ライブラリ

 argparseという標準ライブラリはちゃんとメソッド名がスモール・スネーク・ケースである。なのにunittestはおなじ標準ライブラリであるにも関わらず、なぜかキャメル・ケースだ。

 このように、標準ライブラリでさえ名前の付け方が統一されていない。わざわざpep8などと名前をつけてまでルール化しているにもかかわらず。バカなの? いるの?

unittest

 よい子のみんなはPythonコードを書いたら単体テストをするだろう。嬉しいことに標準ライブラリで単体テストをサポートしてくれる。次のようなコードを書くだろう。

#!/usr/bin/env python3
# coding: utf8
import unittest
if __name__ == "__main__":
    unittest.main()

 そしてよい子のみんなはpep8を守ってスモール・スネーク・ケースでメソッド名を書くだろう。公式ドキュメントunittestのコード例でもそのように書いてある。

#!/usr/bin/env python3
# coding: utf8
import unittest
class TestToken(unittest.TestCase):
    def test_some(self): pass
if __name__ == "__main__":
    unittest.main()

 なのに、unittestのメソッドはキャメル・ケースなのだ。なのでそのメンバーメソッドを使うとキャメルケースとスネークケースが混在してしまう。結果、次のように統一性のないコードになる。

#!/usr/bin/env python3
# coding: utf8
import unittest
class TestToken(unittest.TestCase):
    def setUp(self):
        self.excepted = '期待値'
    def test_some(self):
        actual = テストしたいメソッド
        self.assertEqual(actual, self.excepted)
if __name__ == "__main__":
    unittest.main()

 キモチワルイ。私の心が狭いのだろうか? キモチワルイと思う私が悪いのだろうか? 私の精神が問題なのか? 多様性を認めない私が悪いのか?

 否! 断じて否! 自分で作ったルールを守らないクソコードが公式標準ライブラリであることこそが悪である!

 Pythonが悪い。

Pythonが悪い。

Pythonが悪い。

所感

 Pythonはほんとクソ。ことあるごとにそう思う。

 サクッと書けるのは嬉しいんだけど、テキスト処理だけで済むならbashのほうが楽なことも多い。その見極めも難しい。

 Python2と互換性がなかったり、すでにサポート終了していたり。なのに実行時pythonの末尾に3がないと2になったり。ググるときに23が混在していて二度手間になったり。

 もうとにかく総合的にクソ。💩

 せめて名前の統一くらいちゃんとしろや。C#をみろよ。最高だろ。なんて美しいんだ。Python、てめーは汚すぎた。ドキュメントも汚い。コードも汚い。パッケージも汚い。モジュール名・ファイル名も汚い。すべての名前が汚い。インポートも汚い。実行環境も汚い。Pythonに関わるすべてが汚い。

 プログラミングの5割は命名だ。意味が通じて体系化された名前をつけることがプログラミングにおけるキモである。なのにこのPythonとかいうゴミ言語は、標準ライブラリのせいで名前重複が起きまくる。もう死んでほしい。先述のとおり命名規則さえ守らない。なんで死なないの?

 もっと高速でサクッとかける高級スクリプト言語はないのだろうか。Rubyか? Rubyも勉強したくなってきた。たぶんスクリプト言語といえば、bashpythonruby、go、javascriptくらいだろう。もう全部制覇したい。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux