タグ

programmingと考え方に関するshimookaのブックマーク (13)

  • 良いコードの書き方 - Qiita

    概要 チームによる継続的開発を前提としたコーディングのガイドライン。 特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。 サンプルコードは別段の定めがなければSwiftで記載。 ガイドラインの目的 生産性を高め、メンテナンスコストを下げる バグが生まれづらくする 開発メンバー(特に新規参加者)がコードを理解しやすくする 初心者プログラマー教育 内容の説明 タイトルの頭についた【数字】は重要度。 高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。 【5】変数のスコープを小さくする 変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。 プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。 また、変数はスコープや寿命が大きいほど悪影響が

    良いコードの書き方 - Qiita
  • JSONでデータを返すAPIは構造の意味を持たせつつArrayを返そう

    すっげー初歩的な話。初歩的すぎて『Web API: The Good Parts』にもたぶん載ってない。 あと envelop の話はあえて無視してます。envelop を付けるべきか否かはこのエントリでは扱いません。あくまでデータの話に限定しています。 まとめ自分でお手軽に作る時に key-value のデータをそのまま返しちゃう場合があるけど、これはやめた方がよい。 つい

  • Clean ArchitectureとHanamiですっきりしてきた

    デザインパターンのよさが分からない人は設計に自信が持てるようになるのか問題自分語りを少々。1 目の前にあった HTMLJavaScriptPHPSQL が渾然一体となったコードと戦うことから始め、テスタブルなコードを自分が死なないように習得していった自分にとって、鬼門の一つは 再利用のためのデザインパターン だった。 何しろ再利用可能なコードなんてほとんど何もなかったのだ。そんなもの分かるわけがない。 ところが世の中の「ためになる」はオブジェクト指向やデザインパターンの知識が前提になってしまっているところが結構あって、歯がゆい思いをすることもそれなりに多かった。 そんなところに、少ない設定、少ない知識でもプロダクティブな開発ができる Ruby on Rails というフレームワークが登場したことで、自分にできることが広がった。2 Rails の支援していないもののうち、

  • 提案:エンジニアに気軽に「バグ」というのはやめませんか? - worker experienceの日記

    もしかしたら私だけかもしれないです。ずれているかもしれません。 一般論ではないかもしれません。 でも、同じような気持ちになっているエンジニアがいるかもしれないので、 代表して言わせてください。 エンジニアに、気軽に「バグ」と言うのをやめませんか? 最近立て続けに以下のようなことが起こっており、私と同僚が消耗しています。心がすり減ってます。ワーカーエクスペリエンスが低下しています。。。 ~~~~~~~~~~~~~~~~~~~ 「○○さん、この数値がバグなんだけど直してもらえる?」 →調べたらその週は祝日影響で、営業日が少ないだけだった。 「あのデータのバグはいつ直りますか?」 →データの集計定義の変更の依頼があり、変更前の状態をバグと呼ぶ 「この前入ってなかったバグなんだけど、次の開発に入れてもらっていい?」 →スコープ外のこと(担当がそれを忘れていた)をバグと呼ぶ ~~~~~~~~~~~~

    提案:エンジニアに気軽に「バグ」というのはやめませんか? - worker experienceの日記
    shimooka
    shimooka 2018/03/01
    言い方はこの際置いといても、「起こっている現象」「再現手順」「期待する結果」を教えろ。いつもそれがないから苦労する。
  • どこに何を書くのか?

    13. type User struct { Attack int //攻撃力 } func main() { u := User{ Attack: 100, } //攻撃力は int の Attack に乱数を加算したものになる rand.Seed(time.Now().UnixNano()) u.Attack = u.Attack + rand.Intn(10) fmt.Println(u.Attack) } 14. type User struct { Attack int //攻撃力 } func main() { u := User{ Attack: 100, } //攻撃力は int の Attack に乱数を加算したものになる rand.Seed(time.Now().UnixNano()) u.Attack = u.Attack + rand.Intn(10) fmt.Pr

    どこに何を書くのか?
  • オブジェクト指向と20年戦ってわかったこと - Qiita

    この記事の内容 オブジェクト指向と10年戦ってわかったこと Twitterやはてブコメントを見たら、「わかりやすかった」というコメントもあったのですが、どちらかというとネガティブ方面なコメントが多く目につきました。マサカリという用語で忌憚なく意見を言う風潮については別にいいんですが、「わかりにくい」「間違っている」「古い」みたいなコメントは何も生み出さないし、みんなでニコニコポエムを投稿しあうやさしいインターネッツになったらいいなって思ったので、僕もオブジェクト指向について投稿しようと思います。 何原則? 3原則じゃなくて4では?みたいなコメントもあったのですが、別に3でも4でも5でも重要ではないかなって思います。この4原則の出どころがどこかは知らないですが、C++かSmalltalkあたり(このあたりの話を見かけたのはJava登場前だった気がする)をターゲットとしている気がします。Jav

    オブジェクト指向と20年戦ってわかったこと - Qiita
  • 破れ紙の片割れのようなMixinができてしまうワケ - @kyanny's blog

    最近「Mixin は避けられれば避けたほうがよいのではないか」と思い始めている。扱いに困るダメ実装の Mixin を簡単に作れすぎてしまうからだ。 Wikipedia の定義によると、 mixin とはオブジェクト指向プログラミング言語において、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。 とのことなので、そもそも Mixin される側の実装と結びつきが強くなるのは仕方ないのだろう。しかし、まれにだが破れ紙の片割れのような実装を持つ Mixin ができてしまうことがある。 一枚の紙を適当に手で破って二枚にする。断面はギザギザだが、破った二枚の紙の断面はぴったり一致する。もともと繋がっていたものを切り離したのだから当然だ。だが破れ紙の断面にぴったり合うような別の紙を用意するのは簡単ではない。別の紙を合わせる必要があるのならば、紙を破るときに

    破れ紙の片割れのようなMixinができてしまうワケ - @kyanny's blog
    shimooka
    shimooka 2015/05/26
    一理ある。というか、あるある
  • プログラムに証明が付く日 | RANDMAX

    この記事は「Theorem Prover Advent Calendar 2013」6日目の記事です。 http://qiita.com/advent-calendar/2013/theorem_prover 神田「野らぼー」にて、地下の薄暗い店内で… 「そう言えばこないだ隣で起こってたポインタオーバーラン、対応大変そうだったですけどちゃんと家に帰れてたんでしょうかね、新婚なのに…」 「ヌルポとかポインタオーバーランとか、どうして無くならないんだろうね。その時はみんな手を抜いてるつもりなんて毛頭なくて、一生懸命考えて大丈夫だと思ってるはずなんだけどね。レビューもして、それでも起こった後でみんなでソース見てみると、なんで気づかなかったんだよ!ってことになる。」 「人間って、そういうの苦手なんでしょうねきっと。ほら、『何かほかにありませんか』って聞かれても出てこないじゃないですか。静的な解析っ

    プログラムに証明が付く日 | RANDMAX
  • 今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyapp

    今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyapp
    shimooka
    shimooka 2013/07/24
    分かるんだけど、最初は目的ドリブンで良いんじゃないかな?そのうち基礎体力が必要と思えば勉強すると思う。逆に中級者でもテーブル名やカラム名がクオートされてる意味知ってる人どれぐらいいるんだろかと思う。
  • 禅 of Python: 20の格言 - 西尾泰和のはてなダイアリー

    Pythonには "Zen of Python"という、Pythonの設計原則を簡潔に20個の格言にまとめたものがあります。それを単純に翻訳しても伝わりにくいだろうなぁと思ったので、訳注をたくさんつけて翻訳してみました。 美は醜より良い 明示は暗黙より良い 単純は複雑より良い 複雑なほうが理解しにくいよりは良い *1 平坦は入れ子より良い 疎は密より良い *2 読みやすさが重要 「特殊なケース」はルールを破るほど特殊ではない*3 しかし、実利は純粋さより重要 *4 エラーを黙って通してはいけない ただし、明示的に黙らせた場合は別 *5 曖昧さに面したら、正解を推測したくなる誘惑を退けよ *6 一つの明確なやり方があるべきだ。そしてただ一つであることが望ましい。 *7 しかし、その方法はオランダ人以外にはとっつきにくいかもね *8 今やる方がやらないより良い しかし、やらないほうが、今 *す

    禅 of Python: 20の格言 - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2012/06/29
    これ良いね
  • シンプル=バッドシグナル説 - bkブログ

    シンプル=バッドシグナル説 知人と話していて、シンプルという言葉は手抜きの言い訳として使われることがあまりに多いので、シンプル=バッドシグナル(バッドな兆候)なのではないか、という話になりました。 シンプルが言い訳としてよく使われるのは以下のような場面です。 必要な機能が足りていない デザインがださい そこらじゅう手を抜いている プログラミングにおいてよくあるのが、まじめに実装していないクラスに Simple なんとかという名前をつけるパターンです。自らシンプルと名乗っているものには疑ってかかったほうがいいのかもしれません。 以上、シンプルな考察でした。

  • 「エンジニアを確保しやすい」という理由でプログラム言語を選んでいいのか?

    昨日、プログラム言語についてつぶやいたら、いろいろFBを頂きました。ありがとうございます。つぶやきのきっかけは、ちょうどエンジニアと言語の選択について話をしたからでした。 チームは今Rubyと戯れているけれど「なんでRuby」と聞かれたので「まつもとさんとFBで友だちになった」と答えている 「そんな理由で」っていうけど「初めて配属されたところがJava使ってた」とかいう理由でJava始めるのよりはよっぽどいい話だと思うけどなぁ よく聞く選定の条件や理由として、「エンジニアを確保しやすいかどうか」というものがあります。これは言語だけでなくフレームワークでも言えることかもしれません。 組織的な視点で考えると、なるほど。気持ちはわかる気がします。ただ、「エンジニアを確保しやすい=いいエンジニアがいるわけではない」ので、「確保できる=プロジェクトが成功する」というわけでもないでしょう。ふと「マンパ

    「エンジニアを確保しやすい」という理由でプログラム言語を選んでいいのか?
    shimooka
    shimooka 2012/02/03
    『発想が現状維持だから面白みにかける』『目的や情熱を持っている人が決めて、それをチームが共感できるのであれば、その言語を使えばいいんじゃないか』
  • 超ギリギリのタイミングまでまとめに入らない人と婚活とプログラミング

    超ギリギリのタイミングまでまとめに入らない人と婚活とプログラミング 2011-11-25-1 [Opinion][Programming] この記事について。 - ギリギリまで「まとめに入らない」能力 (Chikirinの日記) http://d.hatena.ne.jp/Chikirin/20111124 何かを成し遂げるためには「作る」と「整える」の二段階の作業がある。締め切りの直前まで「作る」作業を行い最後の最後で「整える作業へ移行(まとめに入る)」する人は優秀だ、という話。 確かに時間ぎりぎりまでかけて内容を詰めた方が良いものができる。そういうことを常にやりつづけることができるのであればとてつもなく優秀な人であろう。でも、そうやってギリギリまでやり続けた結果、何もできあがらずに終わるケースも多い。結局、「期限内に成果を出せない人の大部分が採用している方法」であると思う。 婚活 某氏

    超ギリギリのタイミングまでまとめに入らない人と婚活とプログラミング
  • 1