「リファクタリング」を含む日記 RSS

はてなキーワード: リファクタリングとは

2021-04-01

作業実態がほぼない先輩エンジニア

自分とある地方IT企業に勤めている。

最近自社で利用してる社内サービスの大型改修があるということで別案件に配属されたのだが、

そこに元から配属されてた先輩エンジニアコミットログがどうにもおかしい。

先輩は数ヶ月くらい前から俺が担当するのとは別の新機能を3つほど任されてたのだが、

この新機能というのは実態としては別で運用されてる類似サービスとほぼ同機能で、使ってるフレームワークとかも同じ。

相違点はあれどほとんどは項目が減る、とか不要機能がなくなる、みたいなところが中心で、大体はコピペで終わるはずだ。

複雑にデータ依存しあってるとか項目数が膨大とかそういうこともなく割と単純なCRUDだけのよくある管理機能

正直自分ならユニットテストとかリファクタリングとか含めても3つ合わせて1日もあれば終わると思う。

その単純な新機能の開発に何故か先輩は数ヶ月かけていた。

毎日投稿される作業報告書を見るに、それ以外の作業実態ほとんどないみたいだった。

コミットログには、自分が出社して朝礼が始まるまでの5分くらいの間に終わる程度の修正を超細切れに2~3日に数回くらいコミットしてそれっぽく見せていた。

これは完全に社内の体制問題なのだが、今たまたまその部署にいる上長あんまり実態工数感とかわかってない人で、

んでその上社運用サービスってことで納期とか突っつかれることも少ないか適当に口でごまかして今の状況を作り上げたようだった。

ちなみにやってることは「保守要因だから待機が仕事なんだよ」っていうわけでもなく、ガチ業務時間の99%くらいYoutubeやらまとめサイトやら見てんじゃねえのって感じ。

うーん。。。。

だって在宅勤務中に一切Youtubeも5chも見なかったって言ったら嘘になるよ、いやぶっちゃけ割と見てる側だよ。

監視がないのを良いことに犬と散歩出たりお昼休み気持ち長めにとってちょっと遠めのレストラン行ったこともあるよ。



いやにしたって1日の作業に数ヶ月とかかけるのはいくらなんでも攻めすぎだって。。

俺は一応突っ込まれて困らない程度には成果物出してると思うよ。

ここまで極端だと「あの人数ヶ月ほぼ作業実態ないですよ、証拠はこれで~」とか誰かが上にチクリ入れたらどうするつもりなんだよ。

別に俺に実害はあるようなもんじゃないんだがどうすっかなぁ

2021-03-22

高知能者向けの定型業務仕事ってないのかな

定型業務仕事は日々責任時間に追われて正解のない問題に取り組み続けなきゃいけないのがしんどい

かといって定型業務仕事は中~低知能者の労働者マジョリティコミュニケーションしんどい

(べつにバカにしているわけでなく、むしろこちらがマイノリティ障害者っていう自覚はある。IQに差があると会話が成立しづらいって話よくあるよね)

高知能者向けの定型業務があれば迷惑をかけずに済んで三方良しと思うんだけど

いか

---

追記

なるほど、リファクタリングマンデプロイマンは良い線行ってるかも

まあそういうのって社内の手が空いてる誰かが自然となるやつであって、改めて新規人材募集するようなモンでもなさそうだけど

2021-03-13

プログラミングができるようになるタイプとそうでないタイプの違い

コードレビューをずっとやっていると、伸びるタイプかそうでないかが提出してくるコードで分かるようになってくる。

ざっくり

を見る。

コードフォーマット

コードフォーマットで頻繁に同じような指摘を受けるタイプは明らかにエディタコンソールといったツールが使えていない。

人間作業の精度を上げるのではなく、100%の精度で作業してくれるツールやらせれば良い。

些末なミスツールが拾ってくれる方が高速で、正確で、なにより心理的負荷が低い。

リファクタリング機能コードフィックスの提案を有するツールなら学習のペースも上がる。

コードフォーマットで消耗しているようでは、本来重要なはずの作業学習時間が取れないのは自明だろう。

命名

命名を軽視する者は、作業対象となっているコードがどんな責務を負うか、自身の書いたコードの内容すらも完全には理解していない傾向が強い。

(ここではあえてクラスメソッドという表現を避けるが)扱うコードが何をするもので、何に依存し、どこから呼ばれるか。

どういったエラーが出うるかエラーは今のレイヤ対処しておくべきものか、他のレイヤの責務か。

命名にはそういった情報が反映される。英語が苦手?プログラミングで使う語彙なんて極めて少ない。高校生ぐらいのレベル英語ができれば十分だろう。

しろ、先人が少ない語彙でどうやって事物表現してきたかを学ぶべきである

求められるのは正確さと一貫性であり、誰もボキャブラリーなんぞ求めていない。少ない語彙で正確に表現できるぐらいに対象コードを整理しろ

命名がうまくいかないのはお前の英語力が低いからではない。コーディング力か、コードが扱うドメインへの理解が弱いからだ。

というようなことを、心理的安全を慮り10倍、100倍に希釈して伝える仕事をやっている。

2021-03-03

時間リファクタリングした、大幅に工数削れるわ

今の自分、まじで最高

2021-01-08

プログラミングスクールに通わずに読みたい本

CODE COMPLETE

リーダブルコードでもいいけどこっちも読んでくれ。

アジャイルソフトウェア開発の奥義

分厚いが読みにくくはない。オブジェクト指向パターン実践に学ぶ本。読めたら読め。

デバッグ理論実践

科学デバッグ手法」が読めればいいかな。

Clean Coder

"Clean Code"ではなくClean Code"r"。(どっちも同じ著者。)

プロプログラマが持つべプロ意識の本。

あなたプロプログラマであるなら、上司顧客に対してウソごまかしを行ってはいけない。

ウソをついて、その尻拭いを上司に任せるのならば、あなたプロ意識を持ったプログラマではない。読め。

ソフトウェア見積もり

もしもあなたが「アレクサンダー大王の生まれた年」や「五大湖の総水量」、「2004年時点の米ドル総通流通量」について、

"90%確か"な見積もりをつくることが出来ないのであれば(つまり、「90%の確かさでこの中に正解があると言える下限と上限を示すこと」ができないのであれば)、

あなた見積もりという行為を誤解している可能性がある。読め。

コンピュータシステム理論実装

pythonで何か書く行為プログラミングではない」と感じる人々がいるらしい。

プログラミング言語を直接変更したり自作したり、メモリを弄ったりしない(できない)のならプログラミングではない。それはただのpythonスクリプトキディだ」みたいな。

ぜひnand2tetrisを実践し、pythonコーディングプログラミングであることに気づいて欲しい。楽しみのために読んで欲しい。

リファクタリング

良くないコードとは何かを学んだ方がいい。

なぜ良くないコード再生産されるのかを学んだ方がいい。

世の中良くないコード(を変更する仕事|が生産される状況)の方が多いんだから。読んだ方がいい。

N予備校プログラミングコース

N予備校はいいぞ。スクールだけど。






アレクサンダー大王の生まれた年」…紀元前356年

五大湖の総水量」…6.8*10^23リットル

2004年時点の米ドル総通流通量」…7,199億ドル

2020-12-30

もうすぐ年末年始休暇も折り返しに差し掛かるので軽く振り返ってみる。

26日~27日

作っていたウェブアプリJavascriptからTypeScriptに移行した。

自分はこのウェブアプリに関して『自分の死んだ後も変わらず動作し続け、後世の奇特な人が気が向いたらメンテ出来る』ことを目指しているので、できるだけフレームワークなどは利用せずpureJavascript実装していた。最初jqueryを使っていたが廃止し、bootstrapも使っていたが廃止し、Vue.jsで作り直したものも本番投入せず廃棄した。他のウェブアプリで新しい技術を試すことはあっても、このウェブアプリだけは徹底的に保守的スタンスを貫いてきた。でもここ数年の流れから言って、TypeScriptなら将来的にも大丈夫かな、と思えて来たので、満を持してのTypeScript化。

イベントの実行順序などで多少苦戦したものの、それ以外は大きな問題もなくTypescriptで再構築することができた。

あーやっぱり型があると良いね。画面制御と描画処理が今まで1つのモジュールでやっててそれを何とか解消したかったんだけど、型が入ることでそのリファクタリング安全に行うことができた。描画周りが分離できたんで、そこだけvueなりreactなりに再挑戦するのもアリかもしれない。どっぷりフレームワークに浸かるのは避けたいけど、部分導入だけなら後で捨てるのも容易になる。捨てるのが簡単ならちょっとくらい試しても良いかもしれない。

28

仕事。みんな割りかし休んでるし、自分有給取れば良かった。

29日30日

Google App Engine動作している自分サイトPythonからGoに移行した。

サーバーサイドではほとんど何もやっていないので別にPythonで不便はなかったんだけど、インスタンスの起動がGoの方が早いらしいので、Goに移行することにした。起動が早ければ待機させるインスタンスの数を抑えられるので、費用の低減を図れる。Goで作り直すと言ってもほとんどが静的なhtml手作りbootstrapからhugoに移行して、サーバーじゃないとできない最低限の処理をGoで書き直し。素人感丸出しのサイトが、hugoテーマのお陰でそれなりに見栄えのするものになった。

2020-12-09

anond:20201209143046

入門書の第6章くらいで「これまでやってきた長文の処理をなにかちょっと上位の概念で短く置き換えるのでこの部分全消ししましょう」みたいなのがあると

「ここでリファクタリングテスト概念ぶち込め!新しく書き換えたが動かない・前と同じ動作かどうか確証持てないって点で学習中一番ご利益あるシーンやぞ!!」

と思うのだが、やってる入門書は見ないな

まあ寄り道にもほどがあるしな

別冊付録とかそういうレベルだしな

2020-11-18

そんなレベル大丈夫か?

登場してから、その効率の良さで永らく使われてきたものの、同時に様々なセキュリティホールを生み出した結果、

今や「可能な限り使わないことがベストプラクティス」と言われているC/C++言語

実際、PythonGo言語などで書けそうなら、絶対そっちで書くべきだと心底思う。

(ただしVBテメーは絶対ダメだ)

以下のような、ド素人しか思えない実装によるやらかしを見てきたこともあって、その思いは一層強くなった。


いわゆる下手のC/C++あるあるで、もう本当にうんざりするほど見かけるのが、

char型の巨大な配列グローバル宣言し、それを使い回す」

という、色んな意味頭痛がしてくる実装

それ、今どきのWindowsとかでやられると、ビルドないし実行したタイミングウィルス対策ソフト誤検知したりするんだわー。

しろ人によってはint型の最大数を要素数として配列作るとか、無茶しやがって…みたいな事するんだから無理もない。

てかさー、それポインタを全く活用できてねーじゃん。

必要とき必要な分だけ領域確保して、ポインタで適切に参照させるとか、基本中の基本じゃねーの?

誰でも初心者の時期があるのは仕方ないが、お前初心者レベルのまま何年コード書いてんだ?いい加減にしろマジで


そうやって書いてしまったものリファクタリングするのも、他の安全言語移植するのも諦めて、今日誤検知させる奴がいる。

そもそも本来コンピュータのことを詳しく知っている専門家が使うことを前提とした言語が、こうも広まってしまたことが歴史の過ちだったのかも。

2020-11-16

anond:20201116050134

虎の威を借る狐のごとく他人に言われたことを鵜呑みにして自分の頭で解釈しようとしない愚図の三下には答えられるはずもないので、私が代わりに応えよう。

だったら「返り値と引数チェックにしか型チェックを使ってないC言語問題は起きないはずたが現実はどうよ?」「RubyPython動的言語だけど、強力な型付けのされた言語とは言えないのか?」という疑問に答えられるはず。

ひとつ前の人が言っていたのは、型チェックとテスト仕事バランスの取り方だ。

型チェックの仕事テストが奪うな、ということ。

ももっと悪い事態として、仕事放棄する場合もあり得る。C言語の例はそれに当たる。

C言語の弱い型の中で提言に則りベストを尽くしても型チェックにできる仕事は少ない。

からテストコードを書かざるを得ないが、テストコードを書くことをサボってしまえば問題は起きる。それが現実に起こっている。

RubyPython は強い型付けの言語だ。だが型システムは十分に整理されていない、と思う。

テストコードが膨れ上がるのがその証拠だろう。

実質的に、型システム言語側にビルトインされたテストコードだ。末端ユーザーが書いていたテストリファクタリングして共通化し、上流に巻き上げてコンパイラに組み込んだのが型システムと言える。

貧弱な型システムの元では末端ユーザーが個々に努力して不足を補う必要があって、言語ユーザー全体のコード総量は大きくなる。洗練された型システムを使うユーザーテストコード保守する責任を持たないので末端ユーザー間のコード冗長性は少なくなり、ラクになる。アプリケーションバージョン毎に特殊化されたテストコードは少なければ少ないほうがよい。品質が保たれる限り、なくしていくべき。

anond:20201115125745

> 次に、自分がどうにか身につけてきた知見というものがなかなか広まらない。コンセンサスが取れない、という状況にも苦しくなってくる。

俺の場合は、愚直に書いたほうがいいよ、巨大アプリリファクタリングの話とか鵜呑みにしないほうがいいよ、社内では評判わるくてもプレゼンだけうまかったりプロジェクト破綻するまえに転職するヤツ多いから、とか言っても全く無視される。DDDとか○○アーキテクチャとかだどーのこーのとか。。。

煽るのを仕事にしてるヤツと煽られて載せられてチームを破綻させるひとと、それでもどーにかプロジェクトを完成させなきゃならん責任感に振り回されている。

2020-11-15

anond:20201115004429

どのプロパティかは型名見ればわかるじゃん?まあ同じ型の違うプロパティ複数あったらダメだけど。

リファクタリングIDEに任せればいいと思う。

2020-11-02

anond:20201102110314

リファクタリング」とかに載ってるような、典型的改善点が目に付くクソコードなんかは、むしろ稀で

現実のクソコードはこういうのなんだよね

2020-10-28

言わなくていいよってこう言うことなのだろうか

仕事の話。

古い仕組みで動いているシステムがある。

そこに数ヶ月前から入った。

状況がごちゃごちゃしている。

から配属されていた同じチームの人に

「いやーひどいっすねここ

と言ってしまたことがあった。

とはいえ根本の部分には関わっていなかったので状況までは全て理解してなかったし、

リファクタリングする余裕もなかった。

現在

新しく統括する人が入って来た。

統括の人から

「いやーひどいっすねここ

と言われる。

その時の感情は、

「何でこっちみてそんなこと言うんだよ。

俺のせいじゃねぇのにさも加害者みたいな言い方するなよ。」

だった。

あの時のこの言葉を言われた人もそんな気持ちだったんだろうか…。

言葉を吐き捨てるように言わず、来たるべき場所建設的に話さないといけないな。

反省

2020-10-23

anond:20201023004857

ホントそれ思うわ。僕さ、彼女奥さんも要らないって思ったら楽になったな。

リファクタリングしてれば幸せからね。

2020-10-22

anond:20201022224443

早く仕事を終わらせようと面白くもないスパゲッティコードを書けば死ぬし、

時間がかかっても楽しいリファクタリングしたら生き残れる、ってことだな。

anond:20201022213132

そらそうよ

リファクタリングなんて時間食うだけやで

時間かけてすっきりさせても回りの意識がそれなりにないとすぐ元に戻るだけやし無駄

anond:20201022213155

リファクタリングタスク化してくれてたらいいけど

たいていリファクタリングなんかしてたら生産性低い扱いされて不利益かぶるだけだし

ログイン ユーザー登録
ようこそ ゲスト さん