Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発でより良いコードを書くために
Search
gs
May 27, 2020
Programming
25
0
Share
開発でより良いコードを書くために
pythonで開発する場合に、どのようにコードを書くべきかまとめました。
gs
May 27, 2020
More Decks by gs
See All by gs
bayesian_machine_learning 1
gggggssss
0
46
Other Decks in Programming
See All in Programming
ファインチューニングせずメインコンペを解く方法
pokutuna
0
260
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
120
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
190
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
310
KagglerがMixSeekを触ってみた
morim
0
370
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
210
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
1
260
へんな働き方
yusukebe
6
2.9k
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
820
安いハードウェアでVulkan
fadis
1
880
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
Thoughts on Productivity
jonyablonski
76
5.1k
Chasing Engaging Ingredients in Design
codingconduct
0
160
Information Architects: The Missing Link in Design Systems
soysaucechin
0
860
The Language of Interfaces
destraynor
162
26k
Prompt Engineering for Job Search
mfonobong
0
250
Claude Code のすすめ
schroneko
67
220k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
200
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
250
How to train your dragon (web standard)
notwaldorf
97
6.6k
Transcript
開発でより良いコードを書くために
参考文献
変数名で中身がわかるようにする 例えばresultやgraphだけでは対象が何かわからないので、対象をつけるもしくは、 resultは使わない 例 result → detection_rate_result、total_detection_rate 例 graph →
loss_graph
導入 開発での良いコードとは ☓短いこと △最速で動くこと ◦他の人(1年後の自分含めて)が最短時間で理解できること
名前は短くしない 他の人が読んですぐに意味が理解できるように、一般的ではない、誤解を招く省略形は使わない bad examples ・gen→generate ・no → number ・epoch→ep good
examples ・directory→ dir ・maximize→max 例外・iterator→i (for i, name in enumerate(names))
関数名で処理内容がわかるようにする おすすめは def 動詞_名詞() 動詞は具体的にする 例 get_score()→calculate_score() 例 def loss_graph()
→ def draw_loass_graph()、def draw_save_loss_graph()
変数の型は書いておく intやstrと型の指定も重要だが、最低限 data frameなのか、listなのかは書いて置くとわかりやすい names_df names_list names_dic names_set names_array names
型チェックするmypy https://qiita.com/k-saka/items/8f05c89f675af219e081
単数と複数の区別を明確に イテレータでの単数と複数を明確にしておくとわかりやすい name_list = [“Mike”, “Taro”] for name in name_list:
name XXXX names_list = [“Mike”, “Taro”] for name in names_list: name XXXX
同じ変数に繰り返し違うものを代入しない 同じ変数に繰り返し違うものを代入すると中身が把握しづらくなる data = pd.read_csv(data.csv) data = f1(data) data=f2(data) total_price=f3(data)
return total_price data = pd.read_csv(data.csv) price = f1(data) price_including_tax = f2(price) total_price=f3(price_including_tax) return total_price
処理2 Detect 構造ごとにコードを分ける (class文で分けることをおすすめします) 前処理 処理1 グラフ作成 main main文 from
preprocess import Preprocess from detect import Detect from praph import Graph data = pd.read_csv(data.csv) for epoch in epochs: preprocess = Preprocess(data) detction = Detect(data) Preprocess Graph
処理2 Detect 構造ごとにコードを分ける 上位概念でまとめるとより良い 前処理 処理1 グラフ作成 main main文 from
object_detection import ObjectDtection data = pd.read_csv(data.csv) for epoch in epochs: obj = ObjectDtection(data) object_detection Preprocess Graph
フローは手書き画像のほうがわかりやすい アルゴリズムやコードの流れはコメントではなく、手書き画像が入れるのが Best ・手書きの画像をコードに入れられる VSCodeの拡張機能がある ・手書きできるデバイスが必要になる https://qiita.com/tkrkt/items/2fc9a9a59ce679aab728
PEP8に従っているかは拡張機能で確認 書いたコードがPEP8に従っているかはFlake8やBlackで自動検証すべき ・Flake8 Flake8はコードがこの規約通りに書けているか、シンタックスエラーがないかなどをチェックしてくれるツール ・Black Blackはpep8に関するエラーをチェックするだけでなく、自動で修正してくれる。さらに、改行の仕方やクォー テーションの使い方まで統一してくれる。 多人数開発でコードを合わせるのなら Blackがよい? https://www.macky-studio.com/entry/2019/07/04/152323
読みやすさも 考えないとね 人間だもの