NEGAKULIFEスマートフォン用の表示で見るNEGAKULIFEネ学生のQoLを上げるブログネ学生のQoLを上げるブログ課題が終わらないのは仕様このブログと自分の紹介この広告は、90日以上更新していないブログに表示しています。ネ学こんにちは、夕飯を食べ終わりました。それにしても今週忙しすぎないですか?前編では、チャットクライアントとかそういう話しました。後編はプログラミングの話です。「途中で動かなくなった」とか言っている人向けかもしれないです。ソースコードがきたねえ僕も余り人のことは言えないんですが、これに尽きます。「色々課題にそって追加してったら動かなくなった」っていう人のソースコードを診ると、ゴチャゴチャでよくわからないことになっています。C言語でも書いてるのか????ってツッコミたくなります。そこまでは行かずとも「関数・メソッド」という括りを上手く使いこなせれば、もっとより良いコードが書けるのではないかと思います。(あくまで個人的感想で、ここは結構ナイーブな問題なので宗派が違うひとはすいません)例えば、以下のような、サーバーサイドのプログラムがあったとします。}}読めはするなんとなく意味はわかります。サーバー側のin(前回参照)から受け取った文字列をスペースで分割して、一つ目が「login」だったらログインをする処理です。良いように見えますが、これに処理を加えていってしまうと、どんどんコードが肥大化してしまいます。あなたのコードもそうなっていませんか?改善していくプログラミングは「人類が楽をするため」に存在します(えしら談)。何度も同じことを書くような「めんどくさい」ことをするのって本末転倒じゃないですか?また、同じ処理を色んな所に何回も書くのは、効率が悪いだけではなく、メンテナンスがしづらくなります。「後から見返してよくわからない」「一発で自分の書いた処理がどこにあるのかがわからない」のはこれが原因です。細かくちぎっては投げなので、処理を全部わけちゃいましょう。最初に目をつけるのは、クライアントにメッセージを投げる部分です。「out.println」とか「client.out.println」とか、上のログイン処理だけでも3回も出てきてますよね?これを全部分けてしまいます。一様に「クライアントにメッセージを投げる」といっても、二種類存在する事にお気づきでしょうか。「一つのクライアントにメッセージを投げる」のと「全てのクライアントにメッセージを投げる」の二種類があります。これを前提にこんな改善を行ってみます。}}送る部分を分けてみました。結果的なコードは長くなっていますが、「どこで何をやっているのか」が明確になりました。ここで、更に一工夫加えてみましょう。sendAllは「全てのクライアントにメッセージを投げる」ものですが、中身を見ると「全てのクライアントに順番に見て、一つのクライアントにメッセージを投げる」ということをしています。これを考えると、以下のように書き換えることも出来ます。}}こうすると、全ての「メッセージを投げる」処理が最終的に「sendメソッド」に集約されることになります。これには様々なメリットがあると思います。何かの都合で(まぁこの課題ではありえませんが)、「クライアントに送る方法がout.println()からout.message()に変わったから!」と仕様が変わったとします。いう場合に最初のコードだとどうでしょう。三箇所も書き換えなければいけません。処理が増えていた場合は、もっと多くの箇所を修正する必要があります。次のコードだと、二箇所の変更で済みます。最後のコードだと、一箇所で済みます。これって凄い大きいことじゃないですか?!分割するセンスかといって、正直いってどこまで分割していくかというのは好みの問題です。「細かすぎるとみづれえ死ね!」っていう人もいれば「細ければ細かいほど良い(世の中にはメソッドは1インデントで納めろという人もいるとか...)」という人もいます。結果的に動けばどうでもいいです。(10)月別アーカイブ検索はてなブログをはじめよう!ne5okuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。