2012-03-23 9 views
2

私はデルファイプログラミングに関する限り、私のゲームを持ち上げることに興味がある中間レベルのプログラマーです。私はそこから専門家の意見を聞く必要があります。Delphi 2010の高度なプログラミングに不可欠なスキルは何ですか?

私は、Delphi 2010を使用してのWin32アプリケーションプロジェクトに着手しようとしていた場合、私は堪能である必要が不可欠なスキルは何ですか私はTOCのようにどちらもあまりにも簡単なものように徹底的だトピックのリストをいただければと思います(中一冊の本)? Webサービスを使用して、データベースを別々に読み書きしたり、おそらく他のシステムコンポーネントと通信していると想定できます。私はそれを認識しているので、Unicode準拠を省略してください。また、Delphiを使用した「ベストプラクティス」プログラミングのためのインターネット上の優れた情報源がありますか、それとも常に「それはあなたがやろうとしていることに依存していますか」(つまり、ここで個々の質問をしてください)ですか?ありがとう。

+0

この質問は、投機と拡張会話を必要とし、FAQにはあまり関係しません。私はそのような質問のファンでしたが、私はFAQ作成コミュニティが正しいことを認識するようになりました。これらの質問はここには当てはまりません。それらはEmbarcaderoのフォーラムに適合します。これは議論のトピックであり、プログラミングに関する質問ではありません。私の短い答え:本当に本当にスマートで、本当に本当に永続する。 –

+0

これをEmbarcaderoのフォーラムに掲載していたのであれば、私はこれらのフォーラムに参加している人々の意見だけに限定されていました。プログラミングコミュニティのより代表的なサンプルとして、私はSOを認識しています。質問は「推測」や「拡張された会話」を要求するものではなく、単に「専門家」として自分自身を心配している人から助言を求めているだけです(完璧な例についてはArnaudの答えを参照してください)。とにかく、あなたが決定に直面した時点で問題はすでに回答されていましたが(しかし受け入れられましたが)、官僚に加わることに抵抗することはできませんでした:-) – Sam

+0

10アップフォートがあれば、閉じる。だから私は0を "アンビバレンス"としてコミュニティから(過去12時間の間に)取る。一年前、私たちはそれをProgrammers.SEに移行しました。これは、SOのFuzzyWuzzyバージョンです。しかし最近は、最近、この種の質問も終わります。それは単にフォーマットに適合しません。 –

答えて

5

最初のアドバイスは、RTL/VCLコードの一部を読むことです。 Classes.pas SysUtils.pas Graphics.pas Controls.pasのように... デルファイでコーディングするときの参考情報です。コードの他の部分(SOAPやFireMonkeyのようなもの)は、おそらくあまり参考にならないでしょう...ソースを使って、Luke!

一部のトピック、Delphiのプログラミングにおそらく固有のものではありませんが、私は私のチームの実験とプロジェクトコードのメンテナンスをaccross来た:そこには、ガベージコレクタはありませんが、すべてのクラスインスタンスがなければならないDelphiはメモリの処理方法

  • 解放される、または所有者がいる(TComponent子供);
  • 例外を処理することを忘れないでください。発生する可能性があると考えて、try .. finallytry .. exceptブロック(コードをリソース/メモリ+ハンドルエラーを解放する)で保護します。
  • Delphi 2009以前のコードがある場合は、文字列型がAnsiからUnicodeに変更されていることに注意してください。インターネット上のコードの一部はDelphi 2010の準備ができていません。
  • ユニットテストについて学び、それを使用してください。
  • DelphiのRADのアプローチ(クリックやコードは簡単ですが、GUI、DB、ロジックが混在している場合には悪夢を維持する)を悪用しないでください。真のOOPコーディングは、深刻なプロジェクトにとって必須です。
+0

+1、*ソースを使用、Luke!* :-) – TLama

+0

あなたはVCLを学習に使用することについて正しいです。それにはたくさんの素晴らしいコードが含まれており、それほど良くないコードさえも素晴らしい例になります。 VCLの使用中に発生する問題は、より良い実装に導く可能性があります。これらの問題を検出してより良い解決策を考え出すことができたら、確かに何かを学んだことになります。 :) – GolezTrol

+0

+1 mercie beaucoup、Monsieur。 :-) – Sam

4

「あなたがやろうとしていること」のケースではありません。 ;)

高度なプログラミングは特定の知識と関係しているとは言えませんが、正しい考え方で問題をつかんで、必要なだけのスケーラビリティのある創造的なソリューションを作り上げてください。もちろん、あなたはそれを構築するための知識が必要です。そうしなければならない時には、少なくとも自分で知識を得ることができますが、(高度な)プログラマーであることは、特定のプログラミングスキルを持つよりも大きなイメージを見ることです。

+0

+1あなたの哲学に同意します – Sam

1

インターフェイスを使用してください!

これらは解放する必要がないため、より安全な単純オブジェクトです。コンパイラーは、参照カウントを使用してそれを整理します。

彼らは二回(界面で、クラスセクションで)同じメソッドを入力するという欠点を持っているが、これはまた、あなたが実装セクション内のクラス定義を非表示にすることができます:

interface 

type 
    IJob = interface(IInterface) 
    ['{A925F829-60D6-4418-B03A-1655B311D8D9}'] 
    procedure DoSomething; 
    end; 

function CreateJob: IJob; 

implementation 

type 
    TJob = class(TInterfacedObject, IJob) 
    public 
    procedure DoSomething; 
    end; 

function CreateJob: IJob; 
begin 
    Result := TJob.Create; 
end; 

{ TJob } 

procedure TJob.DoSomething; 
begin 
    // do something 
end; 

お知らせ、そのこのコードには「フリー」はありませんが、完全に有効です。

+1

インターフェイスを実装するすべてのオブジェクトが自動的に解放されるわけではないことに注意してください。それにもかかわらず、インタフェースを使用することは、多くの状況で大きな助けになります。その1つは、オブザーバが特定のインタフェースを実装している限り、任意のクラスにすることができるオブザーバパターンを実装することです。 – GolezTrol

+0

特定の機能を使用するだけで、混乱を起こしながら流行語に準拠することができます。 –

+0

「インターフェイスを使用!私はインターフェイスを学び、使用することを意味します。私は、インターフェイスの有無にかかわらず混乱の容易さに違いは見られません。これは開発者の責任です。 – hubalu

関連する問題