5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
受講生さんの投稿
(投稿ID: 4750)
今回のセミナーまでのカレンダー作成を何も見ずに1から書き上げてみました。
サンプルコードと違う部分記述やまとめ方をしている部分もいくつかありますので添削していただけると幸いです。
小川 慶一さんのコメント
(コメントID: 6633)
こんにちは。
> 今回のセミナーまでのカレンダー作成を何も見ずに1から書き上げてみました。
おお、すごいですね!
> サンプルコードと違う部分記述やまとめ方をしている部分もいくつかありますので添削していただけると幸いです。
まずは、ご自身で添削し、コメントを付記してみてください。
・あえて違う書き方をしたのはどこか
・その書き方にしたことでのメリット、デメリットはどういうものか
「自分で自分のコードを批評する」というのは、とてもよい勉強になります。
コードを書き上げたときの自分以上のスキルの自分になったつもりで、ちょっとレベルが自分より劣る人に指導するつもりでコメントしてみてください。もちろん、気になるところがあれば、今から再度リライトしてもOKです。
そのうえで、メリットデメリットがはっきりしないところ、この書き方で良いのか?と疑問に思ったところについては、ご自身の考えを書き添えたうえで意見を僕に求めてください。
その状態で再度投稿いただいたところでコメントさしあげたいと思います。
※よろしければ、上記のワークをやってみた感想もそのときにお知らせください (^^
受講生さんのコメント
(コメントID: 6639)
お世話になります。ご指示を受けて再度コードを一から書き直し、コメントを入れてみました。
(1週間たってもう一度1から書き直したのでかなりコード内容は変わってしまいましたが、こちらで確認お願いします)
小川先生のサンプルコードと比較すると、各処理を実行するサブプロシージャのタイミングの違いゆえにコード全体としては記述が異なる部分も多いですが、大まかな流れは同じかと思います。
一点明確な違いがコメントに記入しているfor next構文の処理部分かと思いますがこちらの記述はいかかでしょうか(処理負荷、可読性等の点から)
なお、小川先生の仰っていた
>・あえて違う書き方をしたのはどこか
>・その書き方にしたことでのメリット、デメリットはどういうものか
の部分に対する回答としては、あえて違う書き方をした認識はなかったのですが、記述をする際、すでにあるFor next構文でまとめれそうな個所を見つけてまとめていったら書きコードになった、といったところです。
メリットは・・・正直思い浮かばないですが、個人的には直感的にこちらの記述のほうが書きやすかったです。
デメリットは繰り返し構文による処理を多用していることによる処理数の増加でしょうか?(デメリットとしてあげられるほどのものかもわかりませんが・・・)
>※よろしければ、上記のワークをやってみた感想もそのときにお知らせください (^^
1週間前に書き上げて投稿したときは「サンプルコードと全然違うな、とりあえず添削してもらおう」という印象でしたが、今回もう一度書き上げ自分の記述とサンプルコードを見比べながら処理の違いを比較していったところ、記述は違えど変数宣言や別プロシージャに入るタイミングの差であってやっていることは変わらない、みたいな部分がほとんどでした。
(もちろんタイミング一つとっても直したほうが良い部分はあるかもしれませんが)
同じゴールであっても書き方は無数にあり、「別に違ってても良い部分」と「本質的に改善したほうが良い部分」の見極めが必要だと今回感じました。(今回のコメント部分は「本質的に改善したほうが良い部分」か否かの相談です)
すみません。長くなりましたが以下今回書き上げたコードと質問部分のコメントです。
なお、当方が気づいていないだけで「ここも改善したほうが良い」部分がありましたらそちらもご教示頂けると幸いです。
> 受講生 さん:
>
> こんにちは。
>
> > 今回のセミナーまでのカレンダー作成を何も見ずに1から書き上げてみました。
>
> おお、すごいですね!
>
> > サンプルコードと違う部分記述やまとめ方をしている部分もいくつかありますので添削していただけると幸いです。
>
> まずは、ご自身で添削し、コメントを付記してみてください。
> ・あえて違う書き方をしたのはどこか
> ・その書き方にしたことでのメリット、デメリットはどういうものか
>
> 「自分で自分のコードを批評する」というのは、とてもよい勉強になります。
> コードを書き上げたときの自分以上のスキルの自分になったつもりで、ちょっとレベルが自分より劣る人に指導するつもりでコメントしてみてください。もちろん、気になるところがあれば、今から再度リライトしてもOKです。
>
> そのうえで、メリットデメリットがはっきりしないところ、この書き方で良いのか?と疑問に思ったところについては、ご自身の考えを書き添えたうえで意見を僕に求めてください。
>
> その状態で再度投稿いただいたところでコメントさしあげたいと思います。
>
>
> ※よろしければ、上記のワークをやってみた感想もそのときにお知らせください (^^
>
>
小川 慶一さんのコメント
(コメントID: 6641)
添削を返送します。
ご自身でも思われていると思いますが、処理全体のロジックはしっかりしています。
なので、細かい改善点をいくつか挙げてみたという程度です。
複数の処理方法で選択に迷う場合は、以下のような考え方をするとよいです。
[1] コードがより読みやすいのはどちらだろうか
[2] 処理の件数が増えた場合に有利なのはどちらだろうか
[3] 処理件数は事前に想定できているか/不定であるか
添削内でコメントしたのは[2]にかかる部分です。
[2-1] 変数名は、変数をよりたくさん宣言したときには可読性の高いものにしておいたほうがよい。
[2-2] ループ内での処理は少ないほうがよい
[2-3] 個別に処理すると、、件数が増えると処理が重たくなる
[3] は、くり返し構文で For 文を使うか? Do Loop を使うか?という選択にもなりますし、最終的に作成するシートの数が事前に分からない場合は「伝票作成」の課題で示したようなやり方でシートを追加することになります。
カレンダーの場合は「1月-12月のシートを作る」ということで、作成するシートの枚数は既知ですね。