[過去ログ] スレ立てるまでもない質問はここで 164匹目 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
773
(3): デフォルトの名無しさん [sage] 2023/06/15(木) 11:00:14.08 ID:Aj29e5Ws(1/2) AAS
俺が単方向リストを自分で実装したのは中学生の頃だったが双方向はなかなかバグが取れなかった
今思うとダラダラ長ったらしくコーディングして分割が不十分だったし単体テストをしてなかったからだな
ややこしいことをややこしいまま実装するのは誰でも大変
上手な人はパフォーマンスより読みやすさを優先しつつ確実に動く小さな部品を作ってそれを組み立ててるよ

当時は「どんなプログラムでも必ずバグがある」と言われてたしセグフォでアプリが落ちるのなんて普通すぎて誰も気にしなかった
オブジェクト志向と単体テストが普通になってから世の中変わったわ
775
(1): デフォルトの名無しさん [sage] 2023/06/15(木) 11:22:07.74 ID:Aj29e5Ws(2/2) AAS
唐突に見えるのは長文が読めないからだな

たとえばリスト中の一つのノードの後に新しいノードを挿入する関数insert_after(Node* node, Node* new_node)を作る場合
その関数の中に全てのロジックを書きたくなるけどそれをあえて次のように分割する

get_after //引数で指定されたノードの後のノードを取得
combine_after //一つのノードの後に別のノードを繋ぐ
combine_before //一つのノードの前に別のノードを繋ぐ

そうしたらinsert_afterはこうなる

bool insert_after(Node* node, Node* new_node) {
Node* after=get_after(node);
if (node==new_node||new_node==after) return false;
combine_after(node, new_node);
combine_before(new_node, node);
combine_after(new_node, after);
combine_before(after, new_node);
return true;
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s