コーディング規約とかガイドとかって難しいよねという話
注:細かくてどうでもいい話です
Cookpadの規約スタイルガイドについての話
https://github.com/cookpad/styleguide
@yayugu ?
2014-02-25 19:25:39 via YoruFukurou to @yayugu
@r7kamura なんかいきなり無言リプライしてすいません。ここ問題があると思ったんですけど中村さん的にどうですか
2014-02-25 19:28:09 via web to @r7kamura
@yayugu んー、問題があるって言えるほど知識無いから分かんない。規則じゃなくてガイドだから良いんじゃない?でも確かに、あえてlookupのコストを理由として上げるのはあんまり効果的じゃないね。リテラルで書く場合のキーの数とかC側で配列に最適化されてるレベルの大きさだし
2014-02-25 19:47:52 via YoruFukurou to @yayugu
[SHOULD] ハッシュのキーを Symbol にして良い場合は、文字列よりも高速に lookup できるので積極的に Symbol を使うこと。
ここの箇所、言いたいことは分かるんですがちょっと誤解を招くなと思った
具体的には
- 「可読性と一貫性」*1を目的にしているならパフォーマンスの話をするのはおかしい
- ハッシュのlookup速度が問題になるケースはかなり少ないので、一般的な状況ではキーをSymbolにすることにパフォーマンス上の優位点はない
- SymbolはGCされないので新しいSymbolがガンガン作られる状況(ex. ユーザからの入力を.to_symする, 巨大な文字列の集合を.to_symしたものでハッシュをつくるなど)ではメモリリーク*2が発生する。
という問題があると感じた。
で、r7kamuraさんに聞いてみたところ
いくつか勘違いしていたことに気づいた
こうしたらいいんじゃないかなという解決策
↑のようなことを丁寧に書くとクソ長くなってしまうのでもっと率直な理由にすればいいのでは
[SHOULD] ハッシュのキーを Symbol にして良い場合は、タイプしやすいしかっこいいので積極的に Symbol を使うこと。
Conference With Developers 2 を開催します
2月1日にConference With Developers 2というイベントを開催します。
昨年に引き続き今回は、
- ninjinkun http://ninjinkun.hatenablog.com/
- fladdict http://fladdict.net/blog/
- 岸川克己 http://d.hatena.ne.jp/KishikawaKatsumi/
- ishkawa http://blog.ishkawa.org/
という、iOS界で今をときめく/不動の大御所な皆様にお話しいただきます。
LTも募集中ですのでぜひご参加ください
そして老害になる
闇 Advent Calendar 2013の7日目として老害化の話をします。
ベンチャーじゃなく大企業につとめてよかったことは、さまざまな技術バックグラウンドを持つ人と仕事ができていることだ。
色々な流儀や文化の人たちと接し、ぶつかることで自分の視野がどんどん広がっていくのを感じている。
昔話をすると、学生時代、自分は主にRubyを書いていてJavaやPHPをダサいものだと考え、時にはそれを口にすることもあった。
しかしdisるための根拠などをしっかりと持っていたわけではなく、なんとなくで
最新技術=かっこいい、べんり
古い技術=ださい、めんどくさい
と考えていた
社会人になってからダサいと思っていたまともなPHPの書き方を知りそれはそれで悪くない、むしろRubyよりすぐれだところもたくさんある素晴らしい道具と知った。
逆にcoolだと思っていたnode.jsやCoffeeScriptに手を焼き、PhoneGapのような技術で作られたプロダクトに苦しめられもした。
それらをiOSネイティブに書き換えていく作業をするなかで見た目だけで敬遠していたObjective-Cの思想が大好きになったりもした。
DB設計の正しいやり方を身につけ、それまでに自分がActiveRecordのmigrationで適当につくったものがいかにひどいものだったかも知った。
経験を積めば積むほど、今まで自分がバカにしていたものがいかに優れているかがわかるようになったし、逆に今まで無条件で最高だと考えていた技術の欠点も見えてきて、新しい技術が単に新しくてcoolそうだというだけで飛びついたりすることは減ってきた。
エンジニアは気付けば新しくて楽そうなものに流れる傾向がある。
しかし、最高のまともなエンジニアになるためには新しいもの、古いもの、有名なもの、無名なものをイーブンに評価できるようになるべきでなのではないだろうか。
そう考えもあり、最近はC++をずっと勉強していて楽しい。Javaも深く知りたい。他にも知りたいことがたくさんある。
しかし、そういうことをやっているとどんどん周囲と考えが離れていくのを感じる。技術の話をしても噛み合わないことが増えてきているような気がする。
Rubyやnode.jsかじったやつが使ったこともないのにPHPやJavaを叩いてるのを見るとぶん殴りたくなる。
RDBの大した知識もないのに「MySQLはめんどうそうなので、MongoDBを使おう」などと提案されると軽蔑してしまうしそいつとは仕事したくない。
このままいくと将来こんなことを言ってしまうかもしれない
「プロダクションでnode.js使うの?いいけど何か問題が起きたとき対応できるの?nodeのソースコードすら追えないじゃ困るじゃん。C++も読めないのに偉そうなこと言うなよ」
そして老害になる