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

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

2024-11-20

[] リファクタリングしたら生産性が上がった

forループからなる処理があり、データに対して、条件に合致する行にスコアを与え、スコア判定されたものは(id, score)というペアを出力し、それ以外のデータリストにまとめて返す、という処理がある。

このパターンが6回ぐらい連続で続いていたが、条件合致部分が複雑で、処理が一致していることに気が付かなかった。

処理が一致していることに気がついて、abstractメソッド実装(条件合致部分)を与えるという方式にして抽象化したらコードスッキリした。

これによって、「Aスコアの部分にこれこれこういう追加修正をしてね」という要求が来たら即対応できるようになった。

これで俺も、札束風呂美女といちゃいちゃできるかな

2024-10-06

ワタルが見た夢

1. プログラムの夢 - Wataru's Dream of Code

2. ループ迷宮 - Labyrinth of Loops

3. 変数秘密 - Secrets of the Variables

4. 条件分岐の試練 - Trials of the If-Else

5. デバッグ夜明け - Dawn of Debugging

6. サブルーチン冒険 - Adventures in Subroutines

7. レガシーコード呪い - Curse of the Legacy Code

8. リファクタリングの旅 - Journey of Refactoring

9. アルゴリズムの競演 - Symphony of Algorithms

10. クラウドの彼方に - Beyond the Clouds

11. エラーの海を越えて - Across the Sea of Errors

12. 最終コミット - The Final Commit

2024-09-19

リファクタリングして、理解不能バグが起こって、そのたった一つの修正に30時間以上かけた

FUCK

途中で他のとこのバグ修正もかなりできたのが救いではあるが・・・

わかりやすくするために無駄にrefするのやめようと思って引数からrefキーワード外していたのが原因だった

2024-09-17

一日で1万行クソコード書いてるやついくらもいるし

クソコード量産ならいくらでもできるんよ

しろ書くなバカみたいな

天才は違うのかもしれんけど

個人的気持ちいいのは2−3時間書き続けてリファクタリングもして動かした時に一発OKとき

大体二個くらいはケアレスミスあるけど一発でいくと気持ちいい

駆け出しの時は数分に一度動かしてたし今でも知らん言語ライブラリとかだとそうだけどそれはギリギリ動いてるだけ

anond:20240917102110

元の文も読んできたが設計電車でも頭の中でできるというのはその通りだしコードつのはそれを打ち込んでるだけだからいくらでもかけるってのはそうなんだけど

あれは学生の時の話だし、プロはその後リファクタリングして1/3にするんだよね

後の人(それは自分の時も多々ある)とか拡張性を考える

バーって書くなら簡単

2024-08-26

[] リファクタリング作法

実際のところ、リファクタリング不可能ではない。ただ、やり方がある。

「この機能修正して」「バグがあるから修正して」「新しい機能を追加して」と要求が挙がることがあるだろう。これがチャンスだ。

この要求関係する部分(全体ではない)を、リファクタリングすればいいのである

地道な作業になるが、「修正に伴うリファクタリング」を繰り返せば徐々に波及してくる。

ただし、最低限として、以下を満たす必要がある。

anond:20240826103709

数値による裏付けの出せない改善というのは独りよがりオナニーである

https://note.com/joan_of_arc/n/ned510ca913c7

これは業務自分から見てクソだったので、良くするために提言したが全てないがしろにされ鬱になり退職しましたという話を延々している記事だ。

まず仕事においては営業的な意味で数値改善できる根拠が出せないのであればそれは改悪であるリファクタリングを幾らしても自分にとっていいコードになることはあれど、それ以上はない。何故なら書いた人物たちはそれが最善だと思って書いているからだ。

DDDだのデザインパターンだの、モジュール化だのポリフォーリズムだの素晴らしい設計技術が叫ばれて久しいが、一般人にそんなもの脳裏にないし、そんなのを勉強する暇があれば他にすることがある。プライベート仕事に関することなんてするわけない。家で寝転がってポテチをぐーたら食べているのが現実。もし、そうでなければとっくにまともなコードになってる。

さて、仮にリファクタリングをしてもいいとされた時、業務外では家で寝転がってポテチをぐーたら食べている連中が書いたコードをどう直させるかだ。ほぼ不可能だろう。彼らには動くコード正義で、自分の読みやすい密結合スパゲティぐちゃぐちゃコードこそ正義だ。そして彼らは金を産むコードを書いてきた先人でもある。要するに無理な話ということだ。君が社長でないのであれば諦めろということだよ。

2024-08-25

anond:20240825183237

消して

リファクタリングして

くだらない超幻想

忘られぬ存在感

起死回生

リファクタリングして

意味のない想像

君を成す原動力

全身全霊をくれよ

くれよぉぅ…😟

2024-08-22

自社サービスより下手なSIerの方が動きやす

https://comemo.nikkei.com/n/n84d2b6b03d3c

>現職(SIerSES)では、仕様などがトップダウンで指示されますよね(自分から意見できませんよね)。弊社のこのポジションでは、トップダウンで指示が来るだけでなく、提案もできます

とあるが、現実問題提案は難しい。小さい会社ならともかく、大手事業会社では膨大なステークホルダーがおり、それら全員にハンコリレーをして回るのは不可能に近い。何故なら最初に貰ったハンコが途中で失効するからだ。そもそも各部門とのコネクションを得るだけで膨大な労力と時間が掛かる。

また社内受託状態になっているとリファクタリングでさえ、発注内容に存在しない概念なので気軽に行うことはできない。仮にチャンスを得ても動き次第では実装した人間メンツも潰してしまうので信頼を失うことさえあり、そういった文化がなければ容易ではない。

対してSESSIerは余った時間は基本何をしてもいい。これは大抵の場合顧客自分契約が準委任などの形で時間清算になっているためだ。社内受託場合は早く終われば追加の案件が振ってきて手を止める暇もないが、SIerはあらかじめ範囲が決まっているため、地面から突如湧いてくるケースは炎上案件を除き存在しないし、炎上案件でも火消しのための改善経験上、受け入れられる。上流側の基本設計要件定義がザルなら下流から叩きなおし、顧客に直談判することすらやりようによっては可能だ。実装した人間しょっちゅう入れ替わるのでメンツもクソもないし、仮に残っていても妙なプライドを持つ人間は多くない。

事業会社では自社で抱えている社員限界まで使い倒すのが狙いなのもあり、これが難しい。外注を入れると高くつくのでギリギリの人数で仕事を回していると余白がないのだ。逆に入っている側の人間は明確な義務がないので自由に動ける(SES会社との関係悪化が起きるとよくないので使い潰すような動きはしない)

転職活動中に複数から意見を聞いたが、外部向けにアピールしているボトムダウンやら改善活動は人を集めるための方便・綺麗ごと、常識的に考えれば事業成長が優先でやる暇などないよ、と言われたので恐らくどこもそうなのだろう。

2024-07-21

テキストエディタってなんやろな?

いやぁ〜、テキストエディタ世界めっちゃディープでんねん!聞いてくださいよ〜。

まず、テキストエディタ心臓部、バッファ管理システムについてや。これ、単なるテキスト保持やないんですわ。例えば、Emacsガベージコレクション機構マーク&スイープ方式採用してて、バッファ内のLispオブジェクト効率的管理してんねん。これがあるから、長時間編集作業でもメモリリークせーへんのや。

次に、レンダリングエンジン。これが曲者でんねん。Unicode標準のUAX #9に準拠した双方向アルゴリズム実装せなアカン。さらに、合字処理のためにOpenTypeのGSUB/GPOSテーブル解析も必要や。Harfbuzzライブラリ使うんやけど、カスタムシェーピングエンジン組み込んで、特殊文字体系にも対応せなアカンのや。

構文解析エンジンも侮れまへんで。LR(1)パーサーじゃ複雑な言語構文に対応でけへんから、GLR(Generalized LR)パーサー実装するんや。これで曖昧文法も扱えるようになるんですわ。Treesitterライブラリ使うと、インクメンタル構文解析ができて、巨大ファイルでもリアルタイムハイライティングできるんや。

差分アルゴリズムも奥が深いんですわ。Myers差分アルゴリズムだけやなくて、Histogram差分アルゴリズム実装せなアカン。大規模リファクタリング差分表示に効くねん。さらに、セマンティック差分アルゴリズムも組み込んで、構造的な変更も検出できるようにするんや。

非同期処理システムめっちゃ重要や。単なるPromiseやasync/awaitやのうて、Reactive Extensionsベースストリーム処理実装するんや。これで、複雑なイベントシーケンスも扱えるようになるんですわ。さらに、アクターモデルベースの並行処理システム組み込んで、マルチコア活用した並列処理も可能にするんや。

最新トレンドめっちゃアツいんですわ。例えば、Language Server Protocolの拡張や。単なる静的解析やのうて、シンボリックAI使うた意味解析まで可能にしてるんや。これで、コード意図理解して、より高度なリファクタリング提案ができるようになるんですわ。

WebAssembly統合進化してるんや。Single Instruction, Multiple Data (SIMD)命令セットサポートで、テキスト処理のパフォーマンスが爆上がりしてんねん。さらに、WebAssembly System Interface (WASI)採用で、ファイルシステムアクセス可能になってるんや。

AI支援機能も侮れまへんで。単なる補完やのうて、プログラム合成(Program Synthesis)技術導入してるんや。部分的仕様から完全なコードを生成できるようになってんねん。さらに、説明生成AI組み込んで、生成されたコードの詳細な解説までしてくれるんですわ。

リアルタイムコラボレーション進化してるんや。Conflict-free Replicated Data Type (CRDT)のカスタム実装で、ネットワーク遅延があっても一貫性保てるようになってんねん。さらに、意図ベースの競合解決アルゴリズム導入して、複雑な編集操作の衝突も自動解決できるようになってるんや。

拡張アーキテクチャもすごいんですわ。WebAssemblyベースプラグインシステム採用して、言語依存せんプラグイン開発可能になってんねん。さらに、サンドボックス化されたランタイム環境提供して、セキュアなプラグイン実行も実現してるんや。

性能評価も厳しくなってるんですわ。起動時間は、コールドスタートだけやのうて、ホットスタートも測定せなアカン。メモリ使用量も、物理メモリだけやなくて、仮想メモリ使用状況も追跡するんや。CPU使用率は、マイクロアーキテクチャレベル最適化まで求められるようになってんねん。レンダリング性能は、GPUアクセラレーション効率評価せなアカンのや。応答性は、入力レイテンシだけやのうて、知覚的な応答性(Perceived Responsiveness)も測定するんですわ。

いや〜、テキストエディタ世界マジでディープすぎて、もう頭おかしなるで〜!こんな感じで、テキストエディタの最深部まで潜ってみましたけど、いかがでしたかテキストエディタ、侮れまへんで〜。ホンマに。

2024-06-27

anond:20240627112019

からそういうことを言ってるんだよ。

リファクタリングなんかさせんなバーカってプログラマ側が言ってるから、だったらプログラマ最初から全部やってくれって話をしている。

2024-06-25

Github Copilotとかのソースコード特化したAIってプロジェクト下のファイルも加味して新たなメソッドを作ったりリファクタリングしてくれるの?

たとえばAというファイル内で定義されたAAというクラスで新たなメソッドを追加したい。

新たなメソッドはBというファイルBBというクラスにあるBBBというメソッドを使う必要がある。

現在AA内ではBに関する依存関係はないのでnewしたり依存性の注入をする必要があるが

そこも含めてCopilotは生成したりはできるのだろうか?

まぁChatGPTやClaudeでもいいんだけど

2024-06-12

昨日謎のバグに悩まされてるって言ったけど

過去のイキったリファクタリングミスってた虚空にパケットが消えてたわ

サンキュー

2024-06-06

プログラム文章って似てるなと思った

プログラム文章自体は、いい加減に書こうと思えば結構なんとでもなる。

でも、良いものを書こうと思えば、いきなり書くのではなく構想をしっかり練る必要がある。

大事なのはデバッグ校正をすること。

そして必要ならリファクタリングリライトをする。

たったひとつの正解がないからこそ、何度も角度を変えて見返して、これがベストかと自問自答する。

そういう自省力がある人に向いているもので、パパッとやってパパッと終わらせるなんてノリではできない。

文字数だけでは量れない密度評価できないと駄目だよねこういう仕事は。

2024-04-26

システム移行のときになぜ現場のやり方を維持しようとしてしまうのか?(リファクタリング固執しすぎ問題)」

これ本気で分からない人がいるらしいですよ・・・

ビビり散らかしてハゲしまいそうですわ

端的に言えば、「やり方が変わったらミスが増えるし覚えるまでの仕事が遅くなるから」以外にないですよ。

新しいやり方になって大幅スピードアップならともかく、仕事スピード自体はおおむね一緒だけどやり方だけは変わるってパターン場合現場負担半端ない

現場死ぬ気でやれば解決するわけでもなく、人員一時的に増やした所で初心者ばかり集めては結局ミスが増える。

からコストをかけてでもリフクタリングを目指す。

リファクタリングの方が安く仕上がりると勘違いしてるから目指してるんだろうな」と思ってる人、ただのバカです。

発注側も一次請けも現場もみんな「いっそ根本から作り直したほうがシステム屋さん的には楽なんだろう」ってことは分かってる。

でも作り直してしまった場合に生じる現場の混乱とリファクタリングコストを天秤にかけて現場のやり方を変えないことを選んでるわけ。

そこが分かってないで「まーたアホな仕様システム更新しようとしたんでしょー。学習しないね―」みたいなこと言ってるのいい加減見飽きたよ。

人をバカだと思ってるお前らこそが本当のバカなんだってことをいい加減学んでクリー

2024-04-14

モダンフロントエンドなんか意味ない

タイトル釣りです

去年から稼働している現場で、以前からあったReact Nativeの面倒を見ているんだがまあこれがひどい出来なんだ。

jQuery時代に見かけたようなコードをやたら見かけたので思わず懐かしくなってしまった。

リファクタリングしようとしたけど直す範囲が広すぎてアプリを壊しかねなかったので、早々に諦めてだましだまし保守をしていた。

そんな中今年に入ってアプリリニューアルの話が出てきた。React Native捨ててSwift/KotlinやらFlutterに書き換えるとかそういうのではなく、デザイン刷新といくつかの機能改修。

このままだとアプリが更に魔窟化するので、マネージャーに色々相談したところいくつかの事実がわかった。

ということだった。

結局現状のまま進めるわけにはいかず、要件定義の傍らリファクタリング作業をしている。

そういう経緯もあったので、リファクタリングテスト工数も積んだ上で見積もりだしてもらってる。

レガシーアーキテクチャモダンアーキテクチャ刷新」なんてよく聞く話しだけど、

実態は「長年の増改築とだましだましのリフォーム限界になってきたので新築で建て替えます」何だと思う。

最近は「Vue.jsからRemixマイグレーション」なんて見かけるけど、悪いのはVue.jsじゃなくて禄に設計しないでコード書いてるエンジニアと、

リファクタリングには予算でないけどマイグレーションなら予算取れるという悪しき風習

年がら年中フロントエンド刷新しているような会社地雷なので行かないほうがいい。

いくらRemixやらNext.jsやら最新鋭のフレームワーク使ってても、クソコードで書いたらクソが出来上がるだけだ。

新しいフレームワークを試す暇があったらリーダブルコード最初から読み直せ。

2024-04-04

anond:20240404133919

利用者概念だけでもオブジェクト指向理解してないと、ノーコードはすぐ破綻するんよね^^;

しかも、ノーコードリファクタリングは物凄くやりづらいし。

ノーコード開発アンチパターンみたいなのが蓄積されて、普及していかないと、いろいろ厳しいでしょう。

2024-03-23

anond:20240323013829

お前はリファクタリングをした思っているかもしれないが、本当の本当に機能を変更していないと言い切れるのか?

はい、と答えれば現場経験が不足していると叱ろう。

いいえ、と答えればなぜコードを触ったと叱ろう。

2024-03-11

anond:20240311175503

真似て学ぶぐらい憧れを感じる

述べてません。アナタの頭の中の声です。治療法が確立されてます

洗練というリファクタリング極まると最終的に哲学書のような文章になる

そういう見方もあるとは思う。

しかし、リファクタリングかな?コンテキストの深い専門用語を行き当たりばったりで作って無闇に初学者への戸口を狭くする怠惰だと思ったけど。

2024-03-02

anond:20170626005657

この程度のレベルの爺さんが職責を全うできたってことは、そのクソコードリファクタリングした後は天国やん。

好き勝手出来るで。

ワイが昔いた大企業情シスだけで1,000人くらいいたか全然社内SE感なかったわ。

2024-02-26

[] 最小の労力で実施する

コード修正する、システムに変更点を追加する、など色々なことを開発者実施している。

ここで重要なのは、最も少ない労力で実施する方法を探すことだ。

例えばコード修正する場合、100行を追加するよりも、1行だけ追加して実現できないかを探る。

あるいはシステムについても、専用のコード作成するよりも前に、*nix系コマンドの組み合わせでできないかを探る。

最小の労力で実施するために、すこし時間をかけて考えた方が良い。

「最小労力」という基準採用すると、保守性を上げることができる。

これを意識すれば、頻繁にリファクタリング実施せずに済む。

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