開発者は詳細を暗記する必要がありますか?[閉まっている]


33

多くの場合、アプリケーションに関することを忘れます。私はテーブル名やクエリが何をしたかを覚えておらず、欲しいものを得るために検索します。チームリーダーは、使用するテーブル名を記憶することになっていると言った。

開発者は、データベース内のテーブル名、クラス名などを記憶する必要がありますか?そして、答えが「はい、いつも」である場合、それらのことを覚えておくにはどうすればよいですか?


27
私はそれらを忘れることができればいいのに。
ジェフ

6
彼は左手で書くべきだと言ってください(一部の人にとっては非常に簡単で、他の人にとっては非常に難しいです)。
ジョブ

4
「テーブル名を強制的に記憶する」??? WTF !? 「週末までに誰もがこれらの1万の列名を学ばなければなりません。その後、テストが行​​われます。100%を取得していない人は、狂犬病のライオンの私的プライドの最初に強制給餌されます!ブワハハハハア!!!!!」
ドナルドフェローズ

4
私が生協の学生だったとき、私はまさにそれを要求した男と仕事をし、物事を調べたときに「時間を浪費している」と言い、「あなたはこれを勉強していると言いました!」と言いました。記憶からテーブル名(およびその内容)を暗唱できず、テーブル名を記憶することへのコミットメントの欠如を、完全に私を指導するのをやめる口実として使ったとき。私は生協レポートで彼を非難しました。
user16764

2
暗記しないでください。
タイラーマック

回答:


63

これらを明示的に記憶する必要はありません。つまり、スペルテストの単語のリストと同じように、座って学習します。最初の場合、名前は覚えやすく発見しやすいものでなければなりません。そうすれば、あまり手間をかけずに名前を見つけることができます。

また、オートコンプリートなどでここで役立つツールにアクセスできる必要があります。

100を超えるテーブルからなる大規模なシステムでは、すべてのテーブル名とすべての列名を覚えることは本当に期待できません。日。


6
4kのテーブルを持つアプリで働いたことがあるので、このアドバイスの有用性を証明できます。暗記は役に立たず、プロジェクトの規則は役に立ちます(特に強制された場合、そうでない場合は、記憶に頼らなければなりません)。
ビネエットレイノルズ

1
発見しやすくするために、必要なもののチートシートや(モデル)図を作成します。そうすれば、あなたは自分の紙や文書/画像を見るだけで、必要な表と列の名前をスキャンできます。
キサキ

34

アインシュタインは「(本で)調べることができるものを覚えてはいけない」と言って、私は完全に同意します。

必要なときに見つけることができる事実ではなく、抽象的なもの(開発手法と原則)にメモリを使用します。


うん...それを暗記しないでください、それはあなたが情報を使用するようになるでしょう。ただし、常にこの便利なリファレンスドキュメントを用意してください。
ニュートピア

17

恥ずかしいことに-私はもう30年近くCを使用していますが、関数ポインターの宣言方法を思い出すことはできません-構文をチェックするために常にK&Rを出さなければなりません。

さらに恥ずかしいことに、typedefの仕組みについて本当に一生懸命に考えなければなりません。

 typedef foo int;

または

 typedef int foo;

これらは私の個人的な死角です。似たようなものがあれば心配しません。


2
+1:1985年にCのプログラミングを始めましたが、それでも関数ポインターの宣言方法を調べる必要があります。先日、私は刺し傷を1つ受けましたが、それはうまくいきました。(typedefの実行方法を覚えています...:
ボブマーフィー

2
私が使用している言語(C#)では、コンパイラだけでなく、関数ポインタに相当するものが実際に人間によって解析可能であることを嬉しく思います。
svick

@svickああ、関数ポインタの読み取りに問題はありません。それを書く方法を覚えているので、問題があります。
ニールバターワース

3
私は意図的にCまたはC ++優先順位テーブルを記憶しませんでした。必要に応じてすぐに参照できるので便利ですし、覚えていない他の人を混乱させるようなコードを書きたくはありません。
デヴィッドソーンリー

明白でない優先順位規則に依存するコードは悪いコードです。
ロボットを

9

コンピューターは、ものを正確に記憶するのが得意です。コンピューターは、以前に記憶したものを見つけるのにも優れています。

そのため、重要なスキルは、コンピューターを記憶の拡張として使用することです。きれいなコードを記述し、ドキュメントを作成し、検索ツールを効果的に使用することを学び、開発環境を設定して、物を簡単に見つけられるようにします。

すばらしい副作用は、他の人がコードを読みやすくすることです。


5

記憶は重要です

確かに、強力な記憶は、開発者が持つことができる最高の才能の1つです。実際に誰でも持つことができます。それは本当に特別なことであり、私はそれに恵まれた人々をen望し、賞賛します。それは間違いなく、人がより強力な開発者、弁護士、整備士になること、または(ここで選択したジョブを挿入する)のに役立ちます。

いくら必要ですか?

しかし、すべてのものの暗記を要求することは公正な要件ではないと思います。私はあなたが物事を行うことの自然な部分として記憶に物事をコミットし始めると信じています。これが、言語に関する本を読んで、それを実稼働環境で使用することが同じではない理由です。毎日何かを使って作業すると(一部では「練習」と呼ばれます)、いくつかのことを第二の性質にするようになります。

他のポスターと同様に、アプリケーションの重要な部分を覚えておくと役立つと思います。ただし、現代のツールでますます一般的になっているインテリセンスなどの機能を利用できる場合、そのすべてを記憶することに投資する価値があるかどうかはわかりません。

どのように改善できますか?

私は記憶の専門家ではありませんが、脳のゲーム(クロスワード、数独、パズルなど)などのメンタルエクササイズによって実際に記憶を改善できると考える人もいます。理論は、あなたの脳は筋肉のようなものであり、それをさまざまな方法で使用して運動させれば、それを強化できるということです。

脳のゲーム、プログラミング、インタラクティブな活動を行うことなどが、時間とともに脳にどのような影響を与えるかについての研究を見るのは興味深いでしょう。そのようなことは、年齢や認知症によって引き起こされる記憶喪失の発症と戦うのに役立つでしょうか?


5

私がどこから来たのか、「馬鹿は記憶し、賢い人は書き留める」という英語の古い言葉があります。基本的に、あなたの記憶がどれほど良いかは重要ではありませんあなたは忘れます。あなたは人間だけです。そして、これは結果として、人間の記憶に頼ることになります...まあ、信頼できません。それらのテーブル名を覚えていると思っていても、100%確信できますか?テーブル名を検索するのに数秒しか必要ありませんが、スペルミスによって引き起こされるバグを追跡するには、数時間、さらには数日かかることがあります。

結論として、いいえ、特に数千のテーブルとクラスを持つことができる大規模なプロジェクトでは、それはばかげた要件です。


3

あなたが取り組んでいるものであり、それが長期的な割り当てである場合、はい、学習に向けて努力し、さまざまなテーブルと列の名前、クラス、変数、およびメソッドを覚えることができるはずです。これは、あなたが彼らと一緒に仕事をするにつれて、時とともにやってくるものです。一晩ですべてを学習するわけではありませんが、作業中のシステムについてできる限り詳しく知るように努力する必要があります。また、大規模なシステムでは、すべてを記憶しておくことはできませんが、できる限り多くのことを覚えたり覚えたりしない理由はありません。

常にすべてを調べる必要があるのは、生産性の低下にすぎません。タスクに取り組んでいて、数分ごとに停止して調べる必要がある場合、集中力が失われます。適切なツールを使用して支援し、できることを学習/記憶します。生産性が大幅に向上します。


1
詳細を記憶することに強く反対します。概念と機能を覚えておく必要があります。つまり、システムで何ができるか、そしてメソッド/変数/列の正確な名前を知る方法を知っています。
edA-qa mort-ora-y

1
あなたがすべてを知っているとは期待していませんが、特定のサブシステムで作業している人なら誰でもそのサブシステムの内外を知っていると思います。その知識があなたの仕事を気にかけていると思います。
トーマスオーエンズ

3

正確なクラス名を記憶することは重要ですか?そうは思いません。

プロジェクトがクラス名でどのような用語を使用しているのかを知っておく必要があるので、より速く検索できますか?間違いなく。


2

テーブル名を覚えておくべきだとは思いませんが、推測しやすいものでなければなりません。推測しやすくするために、一貫性を保ってください。この方法では、「うーん... fooテーブルは複数形か単数形ですか?主キーIDかRIDかFooRIDですか?」と自問することはありません。


2

主要なテーブル名と重要な列名を知ることなく、データベースをいつでもクエリできるかどうかはわかりません(しかし、すべてではありません)。毎回それを把握する必要なくこのことを知っている人々は、組織にとってより価値が高くなり、他の人が行き詰まったときに「行く」人々になります。

多くの場合、人々がこのようなことを学ぼうとしないと、気付かないうちにクエリでエラーが発生します。データベースの構造、テーブルの相互関係、および重要なビジネスルールが何であるかを調べなくても理解できるので、コードレビューですぐに見つかるエラーがよくあります。

個人的には、構造を学習することを気にしない人は、その特定のデータベースを照会する際に初心者レベルに留まることが多いことがわかります。また、レイオフに耐えられない傾向があります。あなたの上司は、あなたにもっと注意を払わせるためにあなたを助けようとしていると思います。


1

強力なメモリ以上に役立つのは、ドメイン駆動設計であり、テーブル名やクラス名などの簡単な規則に従うことです。ビジネスオーナーが要件について話している場合、そのビジネスオーナーが使用するドメイン固有の用語がコードに含まれている必要があります。この場合、ビジネス用語とコード内の名前との間のマッピングを覚えておく必要はありません。この習慣を理解するにはしばらく時間がかかりますが、ビジネスオーナーと開発者の間で行われる翻訳エラーも減少するため、非常に便利です。

これに加えて、プロジェクトの期間が非常に長い場合、一定の期間コードベースに慣れることは、無意識のうちにメモリを助けます。


すみません、意味はdomain driven design何ですか?
エノネームドノトケア

1
@just_name私はこの使用を開始martinfowler.com/bliki/EvansClassification.html
あるVinod R
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.