2009-04-23 4 views
2

私は最近C#で演奏を始めましたが、非常にイライラしています。私は単純なコントロールだと思うものを追加したいと思うたびに、私はインターネットを掃除するか、自分自身を書くことになります。私はちょうど私が彼らが必要なやり方で作業するようにコントロールを作り直す時間を増やし、実際にアプリケーションを作成する時間を減らすように感じています。.Netは私の開発時間を増やしています - 何か不足していますか?

たとえば、In another questionのように、コンボボックスで境界線を削除することができるかどうか尋ねました。私はコントロールに組み込まれるべきだと思っていたものだが、まあ、この単純な変更のために私自身のコントロールを構築しなければならなかった。

私はC#/ .netにはあまりにも新しく、あまり期待していますか?私はSOがC#を愛していることを知っているので、このような気持ちで私の頭を噛んではいけません。私が何が欠けているのか、そしてC#

+1

これはどのようにして回答できますか? –

+7

あなたのIDEでC#言語よりも問題が多いようです。 –

+2

言語がいかに優れていても、ライブラリがどのくらい包括的でエレガントであっても、何か新しいことにスピードアップするには時間がかかります。確かに、.NETにはエレガントでない部分があります。 WinFormsは多くの従来の手荷物を手に入れ、WebFormsは最高の話をしていません。あなたがそれに慣れれば、それはかなりいいと思うかもしれません。それは時間を与えてください... ああ、あなたの頭を噛んではいけません。しかし、この質問はちょっとだけ主観的/議論的です。 – Shog9

答えて

3

この感想を持つのは初めてではなく、最後の開発者でもありません。私がデモの一部ではない何かをする必要があるたびに、小さな仕事を達成する方法を理解するために何時間も費やさなければならないと私は思っていました。私の欲求不満の大部分は、ASP.NETのWebコントロールでした。

私は、コントロール開発の(急なIMHO)学習曲線を乗り越えれば、多くの不満が解消されたことが分かりました。継承を使用して仮想メンバーをオーバーライドして新しい動作を作成することは、きわめてクリーンなアプローチであると私は感じています。さらに、非常に簡単に再利用できる出力を作成します。 OOのプラクティスを使用すると、JavaScriptスニペットを貼り付けたほうがずっとわかります。

マイクロソフトはすぐに使用できる多くの基本コントロールを提供していますが、すべてのアプリケーションには常に欠落しているものが必要です。可能であれば、コントロール開発の学習や第三者のソリューションの検討をお勧めします。ボイドを埋めるためだけに存在する多くの企業があります。いずれにしても、デフォルトのコントロールセットに基づいて言語全体を判断するわけではありません。

4

新しい技術では、最初は実質的な学習曲線があり、あるものは高い学習曲線を持つものがあります。これらのことがかなり容易になるという経験が増えるにつれて、あなたが見ることになると思います。 C#は.NETアーキテクチャを活用して多くの力を持っていますが、実際には多くの時間がかかります。 C#はまた、流行と強力の両方を保つ新しいコーディングスタイル(新しいバージョンは関数型プログラミングの影響を多く含む)を考慮して変化しています。それに固執し、学習を続けてください。

12

今日、4時間以上費やして、C++プログラムで8バイトのメモリリークを追跡しました。スレッドが関与しており、デバッガをアタッチするとスレッドのタイミングが変わるため、N番目のallocを破棄してリークがどこにあるかを確認するだけの単純な処理もできませんでした。さらに、私は一般に、メモリが割り当てられた2つのイベントを知っていました。残念なことに、両方のスレッドは、8バイトのサイズのオブジェクトをたくさん割り当てようと思っていました。調査の最後に、COMポインタ上の参照カウントエラーがリークにつながっていることがわかりました。

このような調査の上にあなたの髪を引き出す必要はないので、C#に移動する必要があります。

0

あなたの出身地域によって異なります。私はC#が非常に効果的だと思っています。

ほとんどの場合、他のコントロールを使用していても、自分のユースケースに対して100%動作しない場合がほとんどで、アプリケーションに依存関係を作成することはほとんどありません。

プロジェクトをC#4にアップグレードしたいとき、コントロールX YとZがC#4 ... SOLで機能しないためできません。

私はちょうどヒットを前にして、後で悲しみを少なくする自分のコントロールを書いています。

6

たとえば、別の質問で、私はコンボボックス上の境界線を取り除くことが可能かどうか尋ねました。私はコントロールに組み込まれるべきだと思っていたものだが、まあ、この単純な変更のために私自身のコントロールを構築しなければならなかった。

もちろん、コンボボックスでは枠線を削除できません。彼らはWin32のコントロールであり、Win32のルールで再生する必要があります。それは、OSとユーザーに与えるものであり、スタイリングに対するアプリケーションの制御ではありません。

Windowsで完全にスタイルできるものが必要な場合は、WPFを見る必要があります。

+2

Um、Win32のコンボボックスで枠線を削除することができます... – Shog9

1

あなたがしようとしていることは、一般的なものではないでしょうか?ほとんどのGUI開発者は、ある種のヒューマンインタフェースのガイドラインに従っているため、アプリケーションは使用されているOSのウィンドウマネージャによく適合します。ユーザーエクスペリエンスに役立ちます。ほとんどのGUI要素は、これを念頭に置いて設計されています。だから、ほとんどのインターフェースとは根本的に異なるインターフェースを作ろうとしているので、カスタム作業をする必要があることが分かっているかもしれません。それは正常です。

+0

コントロール上の枠線を削除することが奇妙に思えるのはなぜですか、マウスが上に来るか、フォーカスが得られたら枠を戻します。それはちょうど、このフォームの周囲にボックスがあるときに、このフォームで悪いように見えます。 – Tester101

+0

私はそれが奇妙であることを暗示しようとしていませんでした。 – NobodyReally

+0

カスタムコントロールを構築する必要があるかどうかは分かりますが、問題はありません。私はすでに存在するものを再構築するのは好きではない。 – Tester101

2

はい。使用しているツールの経験が不足しています。

たとえば、数か月前、私は次のプロジェクトがASP.NET MVCになると決めました。私は数年前からWebFormsをやっていて、RubyOnRailsでいくつかの個人用アプリを手にしていました。 MVCは自分のアプリケーションのテスト容易性を向上させたいという私の願望に合致していて、とにかく自分のHTMLを大部分は書きたいと思っています。

ASP.NET、C#、RoRのMVCでの経験にもかかわらず、WebFormsの速度に合わせるのにまだしばらく時間がかかりました。私はすべての時間を過ごす必要があったように感じた。今、数ヶ月後、私は以前と同じくらい速く開発することができるように感じます。もっと重要なことに、私は様々なパラダイムを知っており、前に解決した問題と同様の問題に直面したときに簡単に適用することができます。また、何度も再利用できる拡張機能、スニペット、コンポーネントのコレクションを構築しています。

私は、C#/ .NETに避けられない初期の闘争を乗り越え、それが問題の技術であるかどうかを判断するのに十分長い時間を与えることをお勧めします。

+0

これはまさに私がASP.net MVCで経験していることですが、私にとってはまだMVCのフェーズでこれを行う方法がわかりません。 – dtc

3

あなたは新しくなったようです。 C#ではなく、.NETフレームワークの問題です。たとえば、VB.netを使用した場合、同じ問題が発生する可能性があります。

従来のASPからASP.netに移行したときにこの問題が発生しました。半年ほどの間、私はASP.netでやりたいことが古典的なASPでずっと簡単だと感じました。やがてそれはなくなった。今私は再びASP.net MVCを学ぼうとしています。私がASP.netで5分でできることは、ASP.net MVCで理解するのに数日かかる。

あなたのケースでは、Windowsフォームを使用しているようです。前もってwinforms(VB6)を使って作業していましたか?スタイリングをもっとコントロールしたい場合は、WPFを見たいかもしれません。私はあなたが本当に何を意味するかと思います

6

は次のとおりです。.NETの

Windowsフォームは、私の開発時間を増加している - 私は何かが足りないのですか?

私はあなたあるは、いくつかのことを行方不明だと思う:

  • オープン精神旺盛 - 任意の新しいプログラミング言語では、新しい構文が、新しいパラダイムだけでなく来ます。あなたがガベージコレクションのようなC++のパラダイムから来ているのは、あなたが「あまりにも自動」と聞こえるかもしれないし、もっとコントロールしたいと思っているのですが、あなたは手放す必要があります。あなたがあるパラダイムから別のパラダイムに飛ぶときはいつも、前提条件はいつもあなたがいつも知っていたことを忘れる能力です。
  • Windowsのコントロールはウェブコントロールと同じではありません - 以前の質問を確認しましたが、あなたはVBScriptのように見えます。これはおそらく、OfficeまたはASP Classicから使用することを意味します。あなたがウェブにいるときに思い描くことが簡単だったコントロールに対するあなたの要求は、Windowsにとってははるかに厳しいものになると言われています。ではなく、は簡単に変更できるように設計されています。だからWPF/Silverlightが作られたのです。
  • 生産性は学ぶ能力の関数です - そこに、私はそれを言った。傷つけるかもしれませんが、あなたの学習プロセスを妨害しているシニシズムや敵意があれば、すぐにでなくがすぐに生産性になります。新しいことを覚えていなくても慣れていれば、すぐに生産的になることはありません。あなたが新しいことを学ぶことに本当にうれしいと思うなら、あなたはその言語で生産的になる方法を見つけるでしょう - そしてそして私たちはあなたの議論のメリットについて開発時間と議論することができます。
+0

あなたは私の問題が.netと思われるのは間違いありません。あなたの2番目のポイントは、Web開発をしません。私はアプリケーションテストのためにVBScriptを使用しますので、私はコントロールを扱っていません。私はC#を学ぶことでうまくやっています。コントロールのデザインの欠如が私を苛立たせます。しかし、再び私はthatnetの問題だと思うし、C#で取り上げるべきではありません。 – Tester101

関連する問題