独学でC++などプログラミングを学習しても、実際に現場では使えない機能が存在します。
私は未経験でプログラマー採用される前に何冊か入門書や学習サイトで勉強しました。
結果的に苦労して覚えた機能が全く現場で使えないテクニックがいくつかあります。
Contents
独学でC++を学習しても現場で嫌われる機能を紹介
独学でプログラミングをする場合、何冊も読んでサンプルコードを1からマネて勉強するかと思います。
しかし、勉強したことが実際に現場で役立つとは限りません。
一見、便利な機能だと思っていたものが、現場では『全体に使うな』と言われることがあるからです。
私の職場でもC++の入門書に書いてある嫌われた機能や書き方がいくつか存在します。
今回、その中でも特に嫌われてる機能を7つ紹介します。
嫌われる機能①:多重継承
継承とは親クラスから子クラスに機能を引き継がせて、子クラスそれぞれに独自機能を追加するテクニックです。
一回の継承なら許されますが、何度も継承させる行為はチーム全体から嫌われること間違いなしと言えます。
基本的に継承は扱うのに注意が必要なので、実装前には上司や先輩に相談して設計を組むと失敗が少なくなるでしょう。
C++の入門書に必ず継承は紹介されています。
新入社員にバリバリ継承コード作らせることも少ないはずなので、軽く学習する程度で十分です。
嫌われる機能②:テンプレート
関数を柔軟に対応させる機能としてテンプレートが存在します。
基本的に型違いの場合でも関数が使えるようにして、似た関数を減らすことが目的の機能になります。
しかし、ソフトウェア上で不具合が発生した場合、原因がテンプレート内にあるとどのタイミングで呼び出された関数なのか分かりません。
私の会社では型ハッキリ明記して関数を作ることで、不具合が発生するタイミングを見つけやすくします。
そのため、私は3年間テンプレートを実践で使ったことがありません。
嫌われる機能③:new(メモリ確保)、delete(メモリ開放)
変数やクラスなどのメモリを明示的に確保します。
newはメモリ確保、deleteはメモリ解放になります。
嫌われる原因はdeleteを忘れてメモリリークが発生しやすいことです。
基本的にメモリを明示的に確保、解放をしなければスコープを抜けるタイミングで自動的に解放されます。
処理負担が大きすぎる場合はメモリ管理は必要になりますが、deleteを忘れるくらいなら使わない方がいいです。
嫌われる機能④:意味不明な変数名、関数名
入門書によくありますが、変数名をAとかbとか意味を持たせない名前にしていることが多いです。
実際の開発現場では何の値を管理しているのか実行するまで分からないので嫌われています。
他にもイニシャルを組み合わせた名前なども推測できないため、質の悪いソースコードになります。
私の現場では長くなってもいいので、誰が読んでもわかる名前をつけるように教えられます。
嫌われる機能⑤:不要なコメントアウト
初心者にありがちですが、処理に細かなコメントをつけようとします。
この変数はあのパラメータを管理してここで別変数に格納する、ここはこの値を求めるためループするなど重要性の低いコメントは消すようにと必ず指摘されます。
基本的には何をする処理なのかがわかるコード構成にすべきです。
どうしても無理な場合(新機能の追加を見送る)などにコメントをつけたりします。
嫌われる機能⑥:禁断のグローバル変数
グローバル変数はmain関数などの外で宣言する変数です。
この変数が現場で嫌われているポイントはどこからでもアクセスできることです。
入門書ではグローバル変数は紹介されていなかったと思いますが、開発現場では絶対回避したいテクニック?です。
パソコンの環境変数もグローバル変数と同じ機能がありますので、極力使わないようにと言われています。
嫌われる機能⑦:マトリョシカのループ、条件分岐
for文のなかでさらにfor文を宣言するなど、マトリョシカのように階層をネストさせることがあります。
現場ではなるべくネストは浅くするように言われます。
絶対にダメではないですが、仕様上しょうがない場合は許されることがあります。
個人的にもネストは好きではないので、深くなりそうだと思った段階で先輩や上司に相談します。
独学でC++を学習する時には一緒に開発する人の目に気を付けよう
プログラマーとして会社で働きたいと考えている方はチームで開発していることを意識しましょう。
変数や関数の名前やクラス名のルールは会社や開発部署によって異なります。
統一性の無いソースコードは可読性を著しく下げますし、読む側はイライラが止まらなくなります。
メンテナンスや新機能の追加に余計な時間が取られるため、周りに尋常じゃ無い迷惑をかけてしまいます。
郷に入っては郷に従え精神で実装前は周りの処理を確認して、どう言うふうに記述しているか読み込む癖を身につけましょう。
転職するための独学はプログラミング入門書1冊やり切れば十分
以上から独学で学習したことも現場では使えなかったり、足を引っ張ったりする場合があります。
つねに新しい技術や機能が増え続けるのがIT業界なので、状況によって使いづらい機能も登場します。
いくら勉強しても使える機能かは会社の現場に一任されます。
私は未経験でプログラマーになりましたが、感覚的には使用言語の入門書1冊を一通りこなせば十分です。
あとは実践で身につけた方が成長も早いので、転職してしまうことをオススメします。