タグ

考え方とコードに関するsds-pageのブックマーク (9)

  • コードリーディングのコツは極力コードを読まないこと|牛尾 剛

    私はクラウドのプロダクトチームで働いているが、何を隠そう一番苦手で克服できていないことが、コードリーディングだ。ものすごーく時間かかるし、時間かかったうえに読み間違えたりするし、しかもめっちゃ頭使うのに他の人はずっと速いので敗北感しか残らない。先日もマネージャの Pragna に相談したら、最初は2時間かかるけど、3か月もしたら5分で終わるわよ。って言われたけど、いや、そもそも俺4時間は最低かかるねんけどな、、、って感じ。 技術イケメンの皆さんのアドバイス よくよく私のキャリアを考えると、OSSにコントリビュートとかしていることはあったが、めっちゃくちゃ巨大でややこしいコードベースを読んで理解する必要が無いことが多かった。1からコードを書くのは得意だが、他の人のを読んでがっつり理解してとか、どうやったら出来るのかわからない。 当然自分の周りの技術イケメンの皆さんにコツを聞いていたのだが、ど

    コードリーディングのコツは極力コードを読まないこと|牛尾 剛
    sds-page
    sds-page 2021/04/17
    hoge[0][1].split('/')[-1][3:5]みたいなコード書いてて自分でこのクソコードやべーなと思った事ある
  • コメントのいらないプログラムの書き方|NZ MoyaSystem

    パラメータを決める 次に関数に渡すパラメータを決めます。 関数の名前で表現されている処理を実現するには、どれだけのパラメータがあればよいか? と考えてみましょう。 今回の例でいえば「お客さんの年齢」と「日付」があれば、すべてのチケット価格が計算できます。 ということで、age と date の2つのパラメータを渡すことにします。 function calculateTicketPrice (age, date) { } パラメータの名前も、なにを表しているかわかるようにしてくださいね。 くれぐれも「hensu」とか適当な名前をつけたり、同じ変数にぜんぜん違う値を繰り返し代入したりすることのないようにしましょう。 テストを書く 次にユニットテストを書きましょう。 テストは常に更新される仕様書です。 業務ロジックをテストに説明させておけば、関数の仕様をコメントにいちいち書く必要などありません。

    コメントのいらないプログラムの書き方|NZ MoyaSystem
    sds-page
    sds-page 2018/05/15
    長いからって省略単語で関数名を書き出す奴が現れて意図が伝わる伝わらないで殴りあいになる奴
  • 今はコードがお偉いさんなんだからMOBは雁首揃えろって話 - アンカテ

    技術なきマネジメントの衰退とその対策 - メソッド屋のブログ Mob Programmingって初めて聞いたけど、とてもいい方法に思える。 コードを書く時に、今現在の仕様はわかっていたとしても、今後どうなるか、どういう方向に発展するのか気になって、ビジネス的にその分野に詳しい人の所に聞きに行ってから書きはじめることがあるし、性能的に大丈夫かDBに詳しい人の意見を聞いたり、何か迷った時に過去のプロジェクトで似たようなケースをどっちの方法で解決したか調べたりすることもある。 書き出すとすぐ終わる短いコードでも、書き出す前に、聞きにいったり議論したりする時間が随分かかっていることもある。この時間をかけないと、結局、後で変更になるので、先に聞きにいくのがベターなんだが、チーム全員集まってひとつのコードを書けば、そういう時間を省略できるような気はする。 だから、これが生産性が高いということは感覚的に

    今はコードがお偉いさんなんだからMOBは雁首揃えろって話 - アンカテ
    sds-page
    sds-page 2017/06/20
    毎日集まって無駄な会議やるならそのままその場でコード書けって話か
  • スピード感のために品質を落とすということはチームの成長を諦めるということ - ネットの海の片隅で

    サービスを開発していると、スピードが重視される。 そのこと自体にはまったく問題はなくて正当なことだと思っている。 ユーザーに対して一刻も早く価値を届けるためには必要なことだ。 そもそも、自分がいる Web 界隈ではこの点について異論のあるサービス開発者はあまりいないんじゃないかと思っている。 ただ、それを達成するための方法になると途端に意見が分かれはじめて、人によって重視することが全然違ってくる。 ある人は「スピード感が大事」と言い、ある人は「ちゃんと作ったほうがトータルでは速い」と主張する。 しかし、こういうときに意識される品質と速度についてのトレードオフは、実際には完全なトレードオフではないと思っている。 技術力のある人はある程度急いで作ったとしても一定以上の品質のコードを書くし、意図的に品質を落としたとしても速度はあまり上がらない。 逆に、技術力が高くない人が時間をかけて作ったとして

    スピード感のために品質を落とすということはチームの成長を諦めるということ - ネットの海の片隅で
    sds-page
    sds-page 2017/06/01
    各々好き勝手に書いて規約が統一されてない保守性最悪のソースが出来上がったりな
  • いつ突然会社をやめても問題ないという基準でコードやドキュメントを書く - $shibayu36->blog;

    先に前提を話しておくと、会社は全く辞めるつもりはないし、むしろどんどん会社を良くしていこうと思っている。今回はそういう基準で自分がコードやドキュメントを書いていますよという話。 コードやドキュメントを書く時に、どのくらいきれいにしておくかとか、どのくらいわかりやすくしておくかとかを考えることがある。こんなとき僕は、いつ突然自分が会社をやめて連絡がつかなくなったとしても他の人がある程度理解できるか、を基準にしている。そのためにはあまりいい方法が思いつかなくて仕方なく書いている部分にはちゃんと経緯のコメントを書く。他にも例えば作ったサービスであるイベントを開催する方法のドキュメントを書くなら、全く何もやったことがない人がそのドキュメントを読んだらとりあえず開催できるよう、ドキュメントを書く。当然コードもかっこよさよりも、説明しなくても分かりやすくなるようなシンプルさを追求する。 また、このよう

    いつ突然会社をやめても問題ないという基準でコードやドキュメントを書く - $shibayu36->blog;
    sds-page
    sds-page 2016/08/05
    最新テクニックに頼り過ぎないようにしてる
  • 既存コードの甘い匂い (悪意なきチグハグコードの誕生) - jfluteの日記

    まえがき 前提として、しっかりとコーディング規約やコーディング手順などが整備されている現場ではあまり関係ないかもしれません。 そういうのを整備して実践していことが難しい現場、スタートアップからインクリメンタル開発を経て、成長していくサービスを長期間作り上げていく事業会社が主なターゲットの話かもしれません。 既存コードに if 文がありました さて、あなたが開発現場に途中から参画しました。すでに A と B という別の人が作った画面があります。 あなたは C を作ります。C は A と B と似ています。 「さあ、作ってください」 と言われました。どうしますか? ... まあ、普通に考えたら、A と B を参考に作りますよね。ここに甘い匂いがします。 A と B には、とある定型の if 文による制御がありました。C では一見、要らなそうに見えますが複雑でよくわからない。 C でも if 文

    既存コードの甘い匂い (悪意なきチグハグコードの誕生) - jfluteの日記
    sds-page
    sds-page 2016/02/10
    後々まで面倒見る気あるならこれでもいいけどスポットで入って既存コードと全然違う書き方してやり逃げするのはメンテナンスコスト跳ね上がるからやめてほしい
  • 良いコードとは

    GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...

    良いコードとは
    sds-page
    sds-page 2015/12/15
    最低限他人が読むことを考えてコードを書いて欲しい。トリッキーなコードは自分しか読まないチラシの裏でやれ
  • コードの可読性、ハッカビリティ、抽象化 | POSTD

    def deploy(ip): copy('code/', ip + ':~/code', recursive=True) write_template('conf/config.py', ip + ':~/config.py') write_template('conf/crontab', ip + ':~/.crontab') write_template('conf/crontab', ip + ':/etc/apache2/httpd.conf') run_as_root('service cron restart') run_as_root('service apache restart') post('https://pingdom.com/api/2.0/checks', { 'name':ip, 'host':ip, 'type':'ping' }) タスクを実行するものと

    コードの可読性、ハッカビリティ、抽象化 | POSTD
    sds-page
    sds-page 2015/05/20
    5個も6個も関数を辿っていった先にあるのがMustOverrideで中身のないメソッドだった時の徒労感
  • スタートアップにおける糞コードとエンジニアの役割について - 表道具

    2015-03-19 スタートアップにおける糞コードとエンジニアの役割について Kazuho's Weblog: 「技術的負債」は避けるべき? - 割引率を使って考えてみた 「「技術的負債」を問いなおす」というタイトルでJAWS DAYS 2014で話してきた #jawsdays - delirious thoughtsblog.kentarok.org 4年前,俺はあるスタートアップで社長に「あなたそのものがリスクです」と言われた.別に相手は素晴らしい経歴を持った天の上の人間であるし,そういう方に見下されても構わない.しかし,「俺がコードを書いていること」が「リスクだ」と言われたことについては未だに納得行かない.コードはコードであり,それと戦っているだけだからだ.ゾッとした.恐ろしい言葉だった. 件のCTOの退職エントリ以来(ちなみに,社長及び社員の1人が上京した時,うちに泊めたことがあ

    スタートアップにおける糞コードとエンジニアの役割について - 表道具
    sds-page
    sds-page 2015/03/23
    IT業界は製造業で機械にあたる部分が人間なんだよなぁ
  • 1