天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

yr-learning Vol34に参加してきた

yr-camp.connpass.com

今週もこちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。(今日からイベントタイトルが変わりました笑)

ラーニングオライリー

tech.bm-sms.co.jp

tech.codmon.com

tech-blog.tokyo-gas.co.jp

ラーニングオライリーのサブスクがめちゃくちゃいいぞという話をしていました。

トリックを多発するときは見直すいいタイミング

本書はclojureの例でしたが、トリックを多発しはじめたとき不吉な匂いがあるというのは、シェル芸をしようとしているときとかと同じだなーという話をしていきました。

ワンライナーでコマンドを作ろうとして、できたコマンドにはある種の美しさみたいなものを感じるけれど、後で見たり他の人が見たりすると意味がわからないようなコマンドができているというのはすごくよくあるという意見が出ていました。

自分が問題を解決できているという感覚が報酬系に寄与してどんどんのめり込んでしまうという話や、いい言葉が見つからないけれど「自分はいけてるエンジニアだ!」みたいに自己肯定感がどんどん上がっていって、トリックを使いたくなってしまうのかなあという話をしました。

ただ、自分が今自己満足に陥っていてトリックを多発しているのかそうではないかの基準を持つことは意外と難しく、はっきりとした根拠を持てるようにする努力が必要で、それが初心者向けで言えばReadable Codeであり、もう少しステップアップするとGood Code Bad Codeやプログラマー脳などが該当していくんだろうなあという話になりました。

単一責任原則

厳密なレベルでいうとJavaのコードは単一責任原則から逸脱しているという話に対して、たしかにそうかなあと思いつつ、同じ責任とも言えるから「単一」という観点では違反していないようにも見えるし、凝集度が高いんだったら単一責任原則に違反していてもいいんじゃないか??とも思って、よくわからなくなったという話をしました。

下部の記事を読みながら、例えばDiscordのテキストチャンネルと参加者と管理者という2つのアクターが存在する場合、関数型言語だとテキストチャンネルを共有するというよりは、参加者、参加者用のテキストチャンネル、管理者、管理者用のテキストチャンネルみたいな形で実装しそうですが、オブジェクト指向型言語だと、参加者、管理者、テキストチャンネルという形で実装しそうで、そう考えると関数型言語の方が単一責任原則が守られやすいという話は納得できるという話をしていきました。

www.ogis-ri.co.jp