Inicio
Explorar
Enviar búsqueda
Cargar
Iniciar sesión
Registrarse
Publicidad
Check these out next
VS Code Day 2021 Recap
Yuki Ueda
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
Vagrant + VirtualBox + Chef を使った環境構築方法について
Shinya Kinoshita
PHP7で目指す 継続的インテグレーション開発
優也 田島
Microsoft Build 2021 前夜祭LT
Yusuke Yamada
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
Seto Takahiro
C# で QnA Bot
Yoshitaka Seo
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Honma Masashi
1
de
9
Top clipped slide
保守しやすいコードの反面教師 (アンチパターン) その1
30 de Nov de 2021
•
0 recomendaciones
0 recomendaciones
×
Sé el primero en que te guste
ver más
•
100 vistas
vistas
×
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Descargar ahora
Descargar para leer sin conexión
Denunciar
Tecnología
勉強会で使用した発表資料。
keitasudo1
Seguir
Publicidad
Publicidad
Publicidad
Recomendados
プログラミングの型や定石の紹介
keitasudo1
94 vistas
•
13 diapositivas
.NETのTuple応用チャレンジ WCFとC++/CLI
keitasudo1
497 vistas
•
11 diapositivas
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
872 vistas
•
14 diapositivas
Windowsサービスも.NET Coreで作ろう
keitasudo1
627 vistas
•
13 diapositivas
VSCodeへコントリビュート / Contribute to VSCode
Yusuke Yamada
262 vistas
•
19 diapositivas
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
195 vistas
•
19 diapositivas
Más contenido relacionado
Presentaciones para ti
(20)
VS Code Day 2021 Recap
Yuki Ueda
•
216 vistas
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
•
455 vistas
Vagrant + VirtualBox + Chef を使った環境構築方法について
Shinya Kinoshita
•
2.8K vistas
PHP7で目指す 継続的インテグレーション開発
優也 田島
•
1.2K vistas
Microsoft Build 2021 前夜祭LT
Yusuke Yamada
•
372 vistas
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
Seto Takahiro
•
1K vistas
C# で QnA Bot
Yoshitaka Seo
•
3.2K vistas
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Honma Masashi
•
14.1K vistas
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
慎一 古賀
•
9.4K vistas
Codeigniter3フレームアップデート
tomohiro kitaura
•
10.8K vistas
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
•
3K vistas
C# runs anywhere, make anything
Yuta Matsumura
•
966 vistas
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
Yuta Matsumura
•
1K vistas
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
•
518 vistas
GitHub+SlackでIssue駆動開発
Yusuke Hatanaka
•
16.2K vistas
Nishimotz pycon2011jan
Takuya Nishimoto
•
1K vistas
PHPUnitでリファクタリング
Takako Miyagawa
•
7.9K vistas
kintone Cafe Tokyo vol.5/ultra fast recovery
Takahiro Kubo
•
1.4K vistas
Nishimotz osc2011oct-v2
Takuya Nishimoto
•
976 vistas
WordCamp Kansai 2015 実行委員向け GPL勉強会 | GPL study sessions for WordCamp Kansai 2...
Junko Nukaga
•
3.7K vistas
Similar a 保守しやすいコードの反面教師 (アンチパターン) その1
(20)
推し技術書「ユースケース駆動開発実践ガイド」
keitasudo1
•
159 vistas
DevOps、その前に
Yuta Matsumura
•
1.1K vistas
案件で使えるプラグイン特集
優也 田島
•
1.8K vistas
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
•
16.2K vistas
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
•
18.2K vistas
パッチを書いてみよう(第17回Nseg勉強会LT)
Masahiro Yamada
•
1.1K vistas
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
•
1.4K vistas
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
Hiroshi Toda
•
2.8K vistas
Weekend Androidのススメ
Suzuki Junko
•
851 vistas
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
陽一 滝川
•
14.1K vistas
20160326 第10回 Rad Studio 勉強会@Osaka
Ryo Ohki
•
1.2K vistas
Hour of-code-2016冬-シンポジウム
Yuta Tonegawa
•
1.1K vistas
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
Masahiko Sato
•
1.4K vistas
レスポンシブ対応 をサポートするプラグイン
Kawaji Masaki
•
837 vistas
Motohashi.#3
Yusaku Kinoshita
•
2.3K vistas
自分よりも技術力の高い会社に入社して感じたこと
Suzuki Masayuki
•
4.3K vistas
Mizukiryu refactering-20110821
Mizuki Yamanaka
•
572 vistas
これからのOpenShiftの話をしよう
Kazuto Kusama
•
3.4K vistas
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
•
10.6K vistas
Delphi開発者のためのSencha入門
Shinobu Kawano
•
1.1K vistas
Publicidad
Último
(20)
Wandb LLM Webinar May 30 2023 (配布用).pdf
Yuya Yamamoto
•
141 vistas
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
•
204 vistas
DrupalをDockerで起動してみる
iPride Co., Ltd.
•
22 vistas
mi-1. 人工知能の概要
kunihikokaneko1
•
5 vistas
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
kunihikokaneko1
•
4 vistas
生成AIのビルド方法 (ChatGPT)
Citynow Asia Inc
•
41 vistas
触感に関わる共感覚的表現と基本6感情の対応関係の検証
Matsushita Laboratory
•
23 vistas
mi-6. 画像分類システム
kunihikokaneko1
•
4 vistas
【DL輪読会】マルチモーダル 基盤モデル
Deep Learning JP
•
60 vistas
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
311 vistas
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
323 vistas
3Dプリンタって いいね
infinite_loop
•
64 vistas
JSAI2023_企画セッション(仕掛学)資料
Matsushita Laboratory
•
45 vistas
mi-4. 機械学習
kunihikokaneko1
•
4 vistas
MC-800DMT intrusion detector manual
Vedard Security Alarm System Store
•
3 vistas
統計学の攻略_正規分布ファミリーの全体像.pdf
akipii Oga
•
318 vistas
Transformerについて解説!!
Yosuke Horio
•
10 vistas
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
4 vistas
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
27 vistas
mi-2. データサイエンス・AIの事例
kunihikokaneko1
•
4 vistas
保守しやすいコードの反面教師 (アンチパターン) その1
保守しやすいコードの反面教師 (アンチパターン) その1 2021/11/30 須藤
自己紹介 ID:suusanex( connpass・Twitter・GitHub共通)
名前:須藤圭太 サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属 4年ほど受託開発で、上流から下流まで全部を回す ここ6年ほどは、自社製品開発を担当 Windowsアプリ開発のネタが多い
概要 改修を請け負ったソースコードで、「ここに気を遣ってくれていたら、何倍も 改修が楽だったのに」と思った点がある 当然、改修後にはそれを避けるように減らすように注意した
そういうアンチパターンをいくつか紹介して、これ以上無駄な苦労を再生産し ないようにしていきたい
目次 必要ないところで結合度を下げない エラー処理方針は最初に統一する
広すぎる名前を付けない その他小さいものをいくつか
必要ないところで結合度を下げない 何を見たか クライアント内C#コード間のデータ受け渡しで、key-valueの文字列Dictionaryやobjectに 変換して、C#の型に依存しないようにしていた
何が問題だったか コンパイラでエラー検出が出来なくなり、問題の発覚が実行時になった せっかくのC#の型安全メリットが死んだ クライアント・サーバー間やマイクロサービス型なら意味のある結合度低下だが、同時に ビルドする同一言語のコード間の場合はデメリットしか無い どう改善したか 同一プロセス内の呼び出しは、名前と型を明示したメンバを持つクラスへ変更 同一ビルド内で定義を共有しているので、値を追加・削除などしても問題ない プロセス間の呼び出しは、WCFを使って型の制約のあるパイプ通信に変更
エラー処理方針は最初に統一する 何を見たか コードの場所によって、「戻り値にエラーコードを返す」「戻り値のクラス内にエ ラー情報がある」「例外を投げる」「エラーを返さない」などエラーの方針がバラ バラ
何が問題だったか 作っている人も混乱しているのか、エラーをチェックせずにスルーするコードが多 数→エラー発生時に何の情報も出ず、要デバッガ エラーコードと実際に発生したエラーの紐付けが分からず、解析も改修もキツい どう改善したか .NETの出した例外を捨てずに上位へ渡し、判断できる処理階層でだけcatchする このルールを明確にし、メンバーにも周知
広すぎる名前を付けない 何を見たか Commonというクラスに、ビジネスロジック固有の処理も含めた大量のメソッドが 集まっていた
改修対象の機能やデータに影響するものを、コード全部読まないと見つけられない 何が問題だったか 広すぎる名前を付けると、人によって範囲の解釈が変わるので、起きがち Common,Utility,Settings,Defineなどが危険 どう改善したか ProcessUtilityなど、用途別に名前を付けてCommonを分割 ビジネスロジックやデータに依存するものは、その責務を持つ場所に移してカプセ ル化
その他小さいものをいくつか 独自用語なのか規格の用語なのかを曖昧にしない 「string
deviceId; //< デバイスID」 独自に振ったID?何かの規格で取得したID? データ型(特に文字列)をバラバラに使わない Char*,std::string,CString。BYTE*,std::vector。malloc,new。混在は辛い
まとめ 改修時に苦労する点を知っておけば、新規開発時の問題作り込みを避けられる 問題を先送りすると、工数不足でまた問題のあるコードを新規に作り込む
最初からアンチパターンを避けて、悪循環を断ち切ろう
Publicidad