どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼
https://twitter.com/takeshi_program
おつかれさまです。
今日はpaizaのコーディング課題について挑戦したので、その時の気づきを記事にしました。ちなみに私はpaizaランクCでしたが、本記事の3つの対策をしてBにランクアップできました。
是非参考にして頂ければ嬉しいです🥺
はじめに
本記事は以下の読者様が対象です。
- paiza Cランカー
- プログラミング初心者
- コーディングが遅いと感じている人
先に結論
この3つをやるだけでCランカーの頃と比べてコーディングが早くなりました。
- 変数名、関数名を直感的に分かりやすいものにする。
- putsやprintfメソッドで途中経過を書いておく
- arrayの組み込みメソッドについて把握する
気づいた課題
自分がpaizaのコーディング中に気づいた課題が以下です。
- 組み込みメソッドを調べるのに時間が掛かっている
- 組み込みメソッドで楽したいため検索するが、それに時間が掛かっている
- プリコンパイル時のエラーなのか、コンパイル時のエラーなのかわからない
- 英語に翻訳する際に時間が掛かる
- その都度変数の中身を確認している
- 目標のデータ構造が分からないままコーディングしてる
- 最後の出力する際にどのメソッドを使えばよいか決めてない
- コードを書いている途中で何がしたいのかが分からなくなって迷子になっている。
各課題の対策
- 組み込みメソッドを調べるのに時間が掛かっている
- 対策: 組み込みメソッドについて把握する
- 組み込みメソッドで楽したいため検索するが、それに時間が掛かっている
- 対策: 組み込みメソッドについて把握する
- プリコンパイル時のエラーなのか、コンパイル時のエラーなのかわからない
- 対策: putsやprintfメソッドで途中経過を書いておく
- 英語に翻訳する際に時間が掛かる
- 対策: 英語力をつける
- その都度変数の中身を確認している
- 対策: putsやprintfメソッドで途中経過を書いておく
- 目標のデータ構造が分からないままコーディングしてる
- 対策: どんな出力が欲しいか全体像を描き、逆算して考える。
- 最後に出力する際、どのメソッドを使えばよいか決めてない
- 対策: どんな出力が欲しいか全体像を描き、逆算して考える。
- コードを書いている途中で何がしたいのかが分からなくなって迷子になっている。
- 対策: 変数名、関数名を直感的に分かりやすいものにする。
効果のあった対策3選
1週間でそれぞれの対策に取り組んでみて、即効性のあったものが以下の3つでした。
-
コードを書いている途中で何がしたいのかが分からなくなって迷子になっている。
- 対策: 変数名、関数名を直感的に分かりやすいものにする。
-
その都度変数の中身を確認している。
- 対策: putsやprintfメソッドで途中経過を書いておく
-
組み込みメソッドを調べるのに時間が掛かっている
- 対策: 組み込みメソッドについて把握する
各対策に取り組んだ感想
-
変数名、関数名を直感的に分かりやすいものにする。
色んな技術記事に「命名は大事ですよ~」と書かれているものを見たことはありましたが、実際にpaizaの課題でそれを痛感できました!!
この対策をしてみて、自分の中で良い命名の定義がはっきりとしました。
「良い命名とは」
コードを確認しなくても、その変数にはどんなデータが入っているのかが分かる名前であること
この定義を意識することによって、いちいち変数やメソッドの中身をチェックしなくなりました、
(良いメソッド名を設定すると、引数はどんなデータ構造で渡したらよいか、どんなデータが戻ってくるのか一目でわかるようになりました。)
-
putsやprintfメソッドで途中経過を書いておく
どうしても良い命名をしていても値の中身を確認しておきたい事ってありますよね?その時に例えば以下のようなコードを自分は入れるようになりました。
array_index
puts "array_index #{array_index}"
以前は
puts array_index
としか書いておらず、エラーが発生する度にputs書いて、解決したら消して、みたいなことしていました。
式展開を使うことでより分かりやすくプリントデバッグができ、putsを書く回数が減ったし迷子にならないようになりました。
-
組み込みメソッドについて把握する
これが一番効果があったかもしれません。ただ、自分が覚えたのは全体のほんのちょっとだけ、しかもarrayの組み込みメソッドの一部のみです。
私は覚えるのが苦手な質なのでarrayメソッドを層別して覚えました。
私がmiroでarrayメソッドを層別したものがあるので、これを使えば皆さんも覚えやすくなると思います。👍
https://miro.com/app/board/uXjVPHfC2SM=/?share_link_id=698813666816
おわりに
いかがでしたでしょうか?
この記事が参考になれば幸いです。😆😆😆
ひとまずBへのランクアップは3つの事をやるだけ誰でも到達できると思います。
ちなみに、現在Aへのランクアップを目指して頑張っていますが、結構難しいですね。
オブジェクト指向でコーディングしないとさすがにきつくなってきました。
あと、テストがクリアできないという現象も発生しているので、根本的に何かが足りない気がしています。
またAへのランクアップ記事を書きたいと思いますので、おたのしみに~