タグ

programmingとrefactoringに関するmanabouのブックマーク (14)

  • 良いコードとは何か - エンジニア新卒研修 スライド公開|CyberZ Developer

    CyberZ CTO室のメンバーの森 (@at_sushi_at) です。 先日、株式会社サイバーエージェントの2021年度 エンジニア新卒研修でコードの品質に関する講義を行いました。 そこで話した内容とスライドを完全公開します。 45分の内容のため、かなり長いですが、個人的にぜひ一読して欲しい内容になっています。 はじめに こんにちは、森 篤史と言います。2019年度入社で今年で3年目になります。株式会社CyberZのOPENREC.tvというプロダクトでAndroidアプリチームのリーダをやっています。 最近はプログラムを書く仕事以外に、次世代マネジメント室という全社横断組織でDevelopers Blogの改善プロジェクトを実行したり、CyberZ CTO室で組織活性化に取り組んでいます。 あと、2019年度の未踏スーパークリエータにも認定されました。 メインの仕事としては、入社して

    良いコードとは何か - エンジニア新卒研修 スライド公開|CyberZ Developer
  • リファクタリングに関する何か - 日々常々

    リファクタリングの話をするとき、焦点が合ってないなーと感じることがたまにあるのでざっくり描いてみた。 自分のために描いたものなので、なんか違うなーって思ったらご自身で描いてみるといいと思います。レッツモデリング。 破線は依存、実線は変換。長方形は名前などで明確に識別可能なもの、角丸は様々なものを包含する活動。雲は思いです。 描いた時の経緯と言うか 該当ツイート: リファクタリングって常時やるものなんですよね。もちろん「よーしやるぞー」って感じで行うものもあるんですけど、それは深呼吸的な。 とは言え。やったことがない、やってはいけない文化(動いているコードに触ってはいけない)に染められてしまっている、そのような方に「無意識にやれ!」と言っても、何の意味もないので言いません。むしろ害悪ですらある。 該当ツイート: 無意識にやるようになって、ようやく「リファクタリング」がカタログ化される前の「偉

    リファクタリングに関する何か - 日々常々
  • きれいなコードとは? リファクタリングできれいなコードを書く方法 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? エイチームライフスタイルアドベントカレンダー2017の8日目です。 日は株式会社エイチームライフスタイルの新卒1年目のエンジニア@kyntkが担当します。 はじめに 私もエンジニアとして 「コードがきれい」って言われたい! と思い、普段学んだことをまとめる一環としてこのテーマで書くことにしました。 約8ヶ月前、入社したばかりの頃、私は「きれいなコード」と聞いてもあまりピンとこない状態でした。スキルはRailsで簡単なアプリを作れる程度で、コードの美しさについては考えたとがありませんでした。私が書くコードに対しては、ほぼ毎回「読みづらい

    きれいなコードとは? リファクタリングできれいなコードを書く方法 - Qiita
  • デッドコードは取り除かなければならない

    デッドコードは、見つけて、取り除く必要がある。デッドコードを残しておくと、プログラマの理解と行動を妨げることがあり、コードが実行されて、重大な問題を引き起こすリスクもある。 デッドコードの削除は、技術的な問題ではない。Kevlin Henney氏によると、それは考え方と文化の問題だ。 独立したコンサルタントでトレーナであるKevlin Henney氏が、ヨーロッパテストカンファレンス 2017において、基調講演「やり方の間違い」を行った。この基調講演で、デッドコードが実行されたために、ある企業が何億ドルもの損害を被ったことを発表した。 InfoQは、このカンファレンスをQ&A、要約、記事で扱う。 ソフトウェアの失敗は、個人的に不便だったり、迷惑だったりするが、経済的、または、社会的に重大な影響を与えることもある。Henney氏は、小さな不具合のせいで、何百万ドルもの損害を出した例をいくつか

    デッドコードは取り除かなければならない
  • mattnさんのリファクタリングを読み解く - 生涯未熟

    現在絶賛開発中のkirimoriですが、なんとGolang界隈で有名なmattnさんにリファクタリングをして頂くという、とても嬉しい事態がありました✨ kirimoriについてはこちら↓ syossan.hateblo.jp リファクタリング前提でかなり雑に書いていたのですが、めちゃくちゃ良い感じにコードを直して頂けたので自分の勉強のために読み解いてみます👏 リファクタリング前 kirimoriは以下の機能を有しています。 initコマンドでkirimoriの設定ファイル(toml形式)を作成します addコマンドでコマンドライン引数に指定したプラグインを追加します removeコマンドでコマンドライン引数に指定したプラグインを削除します listコマンドでプラグインの一覧を表示します で、構成的には kirimori.go に全てのコマンドの処理をベタ書きにしてある感じになっております

    mattnさんのリファクタリングを読み解く - 生涯未熟
  • 実録!!データ構造リファクタリング -- 僕とメッセージ機能の300日戦争 - Qiita

    みなさんもきっとそうだと確信いたしておりますが、プログラマというのは、どういうわけか実装のちょろまかしには頭がまわるもので、今や丁寧なコードを書く人の鏡とまで言われるワタクシも、それはそれは手抜き方法ばかりうかんだものでした。 技術投資のいくつかは、不意ながら技術的負債になりまして、いろいろと世間様にもご迷惑をおかけした次第です。みなさんもきっとそうだと思いますが。 この話は、そんな「誰にでもある」小さな事件のひとつです。1 この記事は CrowdWorks Advent Calendar 21 日目の記事です。 昨日は @tmknom さんの 「アプリケーションアーキテクチャに関するポエム」 でした。 設計に関するトピックは幅広く、かなり広範な知識が求められますよね!早く DDD を読まねばという気分になりました(笑)。 さて、この記事は、著者がここ1年ほど携わった簡単なデータ構造の

    実録!!データ構造リファクタリング -- 僕とメッセージ機能の300日戦争 - Qiita
  • コードの不吉な臭い - Qiita

    新装版 リファクタリング 既存のコードを安全に改善するを改めて読んでみて「第3章 コードの不吉な臭い」が面白かったので、読書ログとして残しておく。 コードの不吉な臭いとは コードに深刻な問題、リファクタリングを必要とするコードが存在することを示す何らかの兆候、雰囲気を、臭いで比喩して表したもの。 1. 重複したコード 同じようなコードが2箇所以上で見られたら、1箇所にまとめることを考えると良いプログラムになる。重複したコードが存在すると、その箇所を改修する時に同じ改修を重複コード分行う必要があるため、保守性が低くなりがちになる。 2. 長すぎるメソッド 長いメソッドは理解するのが大変。長すぎるメソッドは小さいメソッドに分けていくと良い。ただ、小さいメソッドに分けることでコードを追っていくのが大変になるが、 適切なメソッド名を命名することで内部の実装を見なくても読み進めることが可能になる。メ

    コードの不吉な臭い - Qiita
  • コードを改善する<br>3つの方法 - Qiita

    コード改善 meetup #2 http://kaizen.connpass.com/event/42118/ の発表資料。 自己紹介 名前: 正徳 巧 会社: 株式会社grooves 言語: Ruby github: sinsoku twitter: @sinsoku_listy コードを改善する 3つの方法 コードを改善する3つの方法 1. コードを削る 2. コードを直す 3. 増殖を防ぐ コードを削る よくありそうな業務コード 条件分岐が多い 似たような処理が複数箇所にある コピペっぽいけど微妙に違う 既存の仕様が謎 ココロ、オレル 未使用メソッドを探す 未使用メソッドは基的に 全削除 する。 全削除に対する不安 いつか使うかも... disabled? の対象性のため enabled? も... どこかで使っているかも... 全削除に対する不安 いつか使うかも... disab

    コードを改善する<br>3つの方法 - Qiita
  • 汚コードが我慢ならないエンジニアに使ってほしいリファクタリングツールまとめ|TechClips[テッククリップス]

    エンジニアにとって一度書いたソースコードを改善するリファクタリングは欠かせないものです。特に中長期的に修正や拡張が繰り返されるような場合、書いた人だけでなく、ほかのエンジニアであっても理解できるようにしておくことはとても重要。 万が一怠ってしまうと、それはもう目の当てられない状況になることもあります……。そうならないためにも、常日頃からリファクタリングという作業をルーチンとして取り入れたいところです。そうしたリファクタリングを少しでも効率化できるツールをいくつかご紹介。 もちろん、事前にデバッグしておくことも重要ですので、後半ではデバッグツールもいくつかあわせてご紹介します。日々、コードレビューに時間を取られているような方にとっても作業を円滑にするうえで参考になると思いますので、是非ご一読してみてください。 grunt-plato https://github.com/jsoverson

    汚コードが我慢ならないエンジニアに使ってほしいリファクタリングツールまとめ|TechClips[テッククリップス]
  • バグゼロを実現した話とその後の顛末 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。好きなメソッドは emptyIfNull です。 僕は、自社クラウドである cybozu.com のミドルウェアを開発するチームで働いています。具体的には、検索サービスやファイルサーバー、非同期処理用ワーカー、セッションマネージャーなどなどを提供しています。 僕がこのチームに来たのは数年前ですが、当時はバグの多いプロダクトでした。今はすべての既知のバグを直し、残存不具合件数が 0 件、つまりバグゼロな状態になりました。また、バグゼロを実現してから 2 年ほど経過していますが今もその品質を保っています。今回はこのバグゼロを実現した方法と、その後の顛末について記そうと思います。 以前のコード 数年前に提供されていたこのミドルウェア群は、はっきり言って、バグの塊のようなプロダクトでした。 当時のコードは保守性とは程遠い

    バグゼロを実現した話とその後の顛末 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • GitHub - facebookarchive/codemod: Codemod is a tool/library to assist you with large-scale codebase refactors that can be partially automated but still require human oversight and occasional intervention. Codemod was developed at Facebook and released as

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - facebookarchive/codemod: Codemod is a tool/library to assist you with large-scale codebase refactors that can be partially automated but still require human oversight and occasional intervention. Codemod was developed at Facebook and released as
  • Ruby初心者必見!?「ビンゴカード作成問題」のリファクタリング風景をお見せします #codeiq - give IT a try

    はじめに 先月、CodeIQにビンゴカード作成問題を出題しました。 CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます! - give IT a try このビンゴカード作成問題、ありがたいことに50人もの方が解答を送ってくれました。 挑戦してくださったみなさん、どうもありがとうございました。 前回のエントリでは優秀作品ベスト3を発表しました。 今回のエントリはその続編です。 一部の解答(5)について、僕が実際にいただいた解答を採点しつつ、リファクタリングする様子を動画に撮っておいたので、その様子をお見せしちゃいます。 おさらい「ビンゴカード作成問題」とは? ビンゴカード作成問題とはその名の通り、Rubyを使ってビンゴカードを出力する問題です。 Bingo.generate_cardというメソッドを呼ぶと以下のような文字列を出力する、というのが要求仕様で

    Ruby初心者必見!?「ビンゴカード作成問題」のリファクタリング風景をお見せします #codeiq - give IT a try
  • コメントについて考えてみた - 日々常々

    やきに駆動2.0で話した内容です。 資料 コメントについて考えてみた 長いよ? コメント書いてますか? コードにコメントを書くことは、犬の散歩で糞を持ち帰ることくらい常識的なマナーです。皆さんコードにコメントは書いていらっしゃるでしょうか? 書いてます?書いてます。はい。そうですよね。……なんで? コメントを書く理由を考えたことはあるでしょうか。コメントを書くと、コストがかかります。コメントを書く程度のコストは無視できるものかもしれませんが、書いたコメントを残すと、残っている限りずっとコストをかけ続けることになります。なので、コメントにはリターンが求められて然るべきです。理由のないコメントは、未来の混乱を招く優れた方法です。 コメントを書く動機 コメントを書きたいと思う動機は様々あります。コードがわかり辛いところに説明を書いておく。実装の仕方がわからなくてコメントで書いて次に進んでおく。な

    コメントについて考えてみた - 日々常々
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • 1