2009-04-23 7 views
2

Ich habe vor kurzem begonnen, mit C# zu spielen, aber ich finde es sehr frustrierend. Es scheint jedes Mal, wenn ich hinzufügen möchte, was ich denke, ist eine einfache Kontrolle, ich am Ende entweder das Internet durchforsten oder meine eigenen schreiben. Ich habe einfach das Gefühl, dass ich mehr Zeit mit der Erstellung von Steuerelementen verbringe, damit sie so funktionieren, wie sie sollten, und weniger Zeit, um wirklich Anwendungen zu erstellen..Net erhöht meine Entwicklungszeit - fehle ich etwas?

Zum Beispiel: In another question, fragte ich, ob es möglich war, den Rand auf einer Combobox zu entfernen; etwas, von dem ich dachte, dass es in die Steuerung eingebaut werden sollte, aber leider musste ich meine eigene Kontrolle für diese einfache Änderung aufbauen.

Bin ich gerade zu neu zu C#/.net, oder erwarte ich nur zu viel? Ich weiß, SO liebt C ​​#, also beiß mir nicht den Kopf ab, um mich so zu fühlen, hilf mir einfach zu verstehen, was mir fehlt und ob ich weiter lernen und mit C# arbeiten soll.

+1

Wie kann dies möglicherweise beantwortet werden? –

+7

Es hört sich so an, als hätten Sie mehr Probleme mit Ihrer IDE als mit der Sprache C#. –

+2

Egal wie gut die Sprache ist oder wie umfassend und elegant die Bibliothek ist, es braucht Zeit, um sich auf etwas Neues einzulassen. Und es gibt sicherlich weniger als elegante Portionen zu .NET! WinForms zieht eine Menge Legacy-Gepäck mit sich, und WebForms ist ... am besten nicht erwähnt. Das heißt, Sie können es gut finden, sobald Sie sich daran gewöhnen - geben Sie ihm Zeit ... Oh, und nicht auf den Kopf oder irgendetwas zu beißen, aber diese Frage ist nur ein wenig subjektiv/Argumentativ. – Shog9

Antwort

3

Sie sind nicht der erste oder der letzte Entwickler, der dieses Gefühl hat. Es schien mir immer, dass ich jedes Mal, wenn ich etwas machen musste, das nicht Teil einer Demo war, stundenlang versuchen musste herauszufinden, wie man eine kleine Aufgabe bewältigt. Ein Großteil meiner Frustration war mit ASP.NET-Websteuerelementen.

Das gesagt, ich fand, dass, sobald ich über die (steile IMHO) Lernkurve der Kontrolle Entwicklung kam, viele meiner Frustrationen beseitigt wurden. Ich finde, dass die Verwendung von Vererbung und das Überschreiben virtueller Member zum Erstellen eines neuen Verhaltens ein sehr sauberer Ansatz ist. Außerdem erzeugt es eine Ausgabe, die sehr einfach wiederverwendet werden kann. Die Verwendung von OO-Praktiken erschien mir immer besser, als JavaScript-Snippets überall anzulegen.

Microsoft leistet gute Arbeit, indem es viele Basissteuerelemente bereitstellt, die sofort einsatzbereit sind, aber jede Anwendung scheint immer etwas zu benötigen, das fehlt. Ich würde empfehlen, die Entwicklung von Steuerungen zu lernen oder, wenn möglich, nach Lösungen von Drittanbietern zu suchen. Es gibt viele Firmen, die nur existieren, um die Lücken zu füllen. Wie auch immer, ich würde nicht die gesamte Sprache basierend auf dem Standardkontrollsatz beurteilen.

4

Mit jeder neuen Technologie gibt es eine substanzielle Lernkurve, und einige haben eine höhere Lernkurve als andere. Ich denke, Sie werden sehen, wie Sie mehr Erfahrung sammeln, dass diese Dinge wesentlich einfacher werden. C# hat eine Menge Power mit der .Net-Architektur, um davon zu profitieren, aber eine Menge davon braucht Zeit, um sie wirklich zu schätzen. C# ändert sich auch und wächst, um neue Codierungsstile zu ermöglichen (neuere Versionen enthalten eine Menge Einflüsse von funktionaler Programmierung), die es sowohl in Mode als auch leistungsfähig halten. Bleib dran und lerne weiter.

12

Ich habe 4+ Stunden damit verbracht, ein 8-Byte-Speicherleck in einem C++ - Programm zu finden. Es sind Threads beteiligt, und das Anhängen des Debuggers würde das Timing des Threads ändern, so dass ich nicht einmal etwas so Einfaches tun konnte wie das Nth-Alloc, um zu sehen, wo das Leck war. Außerdem wusste ich generell, zwischen welchen zwei Ereignissen der Speicher zugewiesen wurde. Leider fanden beide Threads, dass es eine gute Zeit war, viele und viele Objekte mit 8 Byte Größe zuzuweisen. Am Ende der Untersuchung fand ich, dass ein Ref-Zählfehler auf einem COM-Zeiger zum Leck führte.

Da Sie sich bei solchen Untersuchungen nicht die Haare ausreißen müssen, sollten Sie zu C# wechseln.

0

Hängt davon ab, woher Sie kommen. Ich finde C# sehr effektiv.

Ich verwende selten andere Steuerelemente, da sie oft nicht zu 100% für meine Anwendungsfälle funktionieren und Abhängigkeiten von Ihrer App erzeugen.

Also, wenn Sie Ihr Projekt auf C# 4 aktualisieren möchten und nicht können, weil X Y und Z nicht in C# 4 steuern ... Ihre SOL.

Also ich nehme nur den Schlag vorne und schreibe meine eigenen Kontrollen, die später weniger Kummer verursacht.

6

Zum Beispiel. In einer anderen Frage fragte ich, ob es möglich sei, den Rand einer Combobox zu entfernen; etwas, von dem ich dachte, dass es in die Steuerung eingebaut werden sollte, aber leider musste ich meine eigene Kontrolle für diese einfache Änderung aufbauen.

Natürlich können Sie den Rahmen nicht in Kombinationsfeldern entfernen. Sie sind Win32 Kontrollen und sie müssen nach den Regeln von Win32 spielen. Dazu gehört, dass das Betriebssystem und der Benutzer nicht die Anwendungssteuerung für das Styling übernehmen.

Wenn Sie etwas möchten, können Sie vollständig unter Windows stylen, dann müssen Sie sich WPF anschauen.

+2

Um, Sie können den Rahmen auf Win32-Kombinationsfelder entfernen ... – Shog9

1

Könnte es sein, dass das, was Sie zu tun versuchen, nicht, sagen wir, üblich ist?Die meisten GUI-Entwickler befolgen eine Art von Richtlinien für die Benutzerschnittstelle, so dass ihre Anwendung gut in den Fenstermanager des verwendeten Betriebssystems passt. Es hilft bei der Benutzererfahrung. Die meisten GUI-Elemente sind in diesem Sinne konzipiert. Es könnte also sein, dass Sie versuchen, Ihre Oberfläche radikal anders als die meisten anderen zu machen, und somit feststellen, dass Sie einige benutzerdefinierte Arbeiten ausführen müssen. Das wäre normal.

+0

Warum alle denken, das Entfernen des Rahmens auf einem Steuerelement ist so seltsam, ich lege den Rand zurück, wenn die Maus darüber ist oder es Fokus erhält. Es passiert einfach, dass es auf diesem Formular schlecht aussieht, wenn es eine Box um es herum gibt. – Tester101

+0

Ich wollte nicht implizieren, dass es seltsam ist, nur dass es nicht üblich ist, so dass es keine Unterstützung dafür gibt. – NobodyReally

+0

Ich kann verstehen, wenn ich ein benutzerdefiniertes Steuerelement erstellen muss, habe ich kein Problem damit. Ich mag es einfach nicht, Dinge wieder aufzubauen, die bereits existieren. – Tester101

2

Ja. Sie vermissen etwas - Erfahrung mit den Werkzeugen, die Sie verwenden.

Zum Beispiel, vor ein paar Monaten entschied ich, dass mein nächstes Projekt in ASP.NET MVC sein würde. Ich habe WebForms seit mehreren Jahren gemacht und habe mich mit RubyOnRails für ein paar persönliche Apps beschäftigt. MVC passte zu meinem Wunsch, die Testbarkeit meiner Apps zu erhöhen, und ich bevorzuge es sowieso, meinen eigenen HTML-Code zu schreiben.

Trotz meiner Erfahrung mit ASP.NET, C# und Erfahrung mit MVC in RoR, dauerte es noch eine Weile, bis die Geschwindigkeit mit WebForms übereinstimmte. Ich fühlte mich, als müsste ich meine ganze Zeit damit verbringen, nach Dingen zu suchen. Jetzt, ein paar Monate später, habe ich das Gefühl, dass ich mich genauso schnell entwickeln kann wie zuvor. Mehr noch, ich kenne die verschiedenen Paradigmen und kann sie leicht anwenden, wenn ich mit einem ähnlichen Problem konfrontiert bin, das ich bereits gelöst habe. Ich baue auch eine Sammlung von Erweiterungen, Snippets und Komponenten auf, die immer wieder verwendet werden können.

Ich schlage vor, dass Sie C# /. NET eine Chance geben, lange genug, um über den unvermeidlichen frühen Kampf zu überwinden und dann entscheiden, ob es die Technologie ist, die das Problem ist.

+0

Das ist genau das, was ich mit ASP.net MVC erlebe, aber für mich bin ich immer noch in der Phase "weiß nicht, wie man das noch in MVC macht". – dtc

3

Es klingt wie du bist nur neu dazu. Es ist nicht C#, das ist das Problem, es ist das. NET-Framework. Wenn Sie zum Beispiel VB.net verwendet haben, haben Sie wahrscheinlich das gleiche Problem.

Ich ging durch dieses Problem, als ich vom klassischen ASP zu ASP.net ging. Für ein halbes Jahr oder so fühlte ich, dass die Dinge, die ich in ASP.net machen wollte, im klassischen ASP so viel einfacher waren. Irgendwann ging das weg. Jetzt gehe ich nochmal durch, wenn ich ASP.net MVC lernen will. Dinge, die ich in 5 Minuten in ASP.net tun konnte, nehmen mich Tage, um herauszufinden, in ASP.net MVC.

In Ihrem Fall klingt es wie Sie Windows-Formulare verwenden. Hast du vorher mit Winforms gearbeitet (d. H. VB6)? Wenn Sie mehr Kontrolle über das Styling wünschen, sollten Sie sich WPF anschauen.

6

Ich denke, was Sie wirklich meinen, ist:

Windows Forms auf .NET ist meine Entwicklungszeit zu erhöhen - ich etwas fehle?

Ich glaube, Sie sind mehrere Dinge fehlen:

  • Aufgeschlossenheit - mit jedem neuen Programmiersprache kommt nicht nur neue Syntax, aber neue Paradigmen. Wenn Sie von C++ Paradigmen kommen, wie Garbage Collection klingt vielleicht "zu automatisch" von Ihnen und Sie möchten mehr Kontrolle haben, aber leider müssen Sie loslassen. Wann immer Sie von einem Paradigma zu einem anderen springen, ist die Voraussetzung immer die Fähigkeit, das zu verlernen, was Sie schon immer gekannt haben.
  • Windows-Steuerelemente sind nicht das gleiche wie Web-Steuerelemente - Ich habe Ihre vorherigen Fragen überprüft und sie sehen aus wie Sie aus VBScript, was wahrscheinlich bedeutet, dass Sie es entweder aus Office oder ASP Classic verwenden. Das heißt, Ihre Forderung nach Steuerelementen, die leicht zu zaubern waren, wenn Sie im Internet waren, wäre für Windows viel schwieriger - Windows war nicht entworfen, um leicht modifizierbar zu sein. Deshalb wurde WPF/Silverlight erstellt.
  • Produktivität ist eine Funktion der Fähigkeit zu lernen - Dort sagte ich es. Es könnte weh tun, aber wenn Sie Zynismus oder Feindseligkeit blockieren Ihren Lernprozess, werden Sie einfach nicht werden bald produktiv. Wenn Sie es gewohnt sind, keine neuen Dinge zu lernen, werden Sie auch nicht bald produktiv werden. Wenn Sie denken, dass Sie wirklich gut darin sind, neue Dinge zu lernen, werden Sie Wege finden, in dieser Sprache produktiv zu werden - und dann können wir diskutieren über Vorteile Ihrer Argumente gegenüber Entwicklungszeit.
+0

Sie haben recht, mein Problem scheint mit .net zu sein. Was Ihren zweiten Punkt anbelangt, mache ich keine Web-Entwicklung. Ich benutze VBScript für Anwendungstests, so dass ich mich nicht mit Steuerelementen beschäftige.Mir geht es gut, C# die Sprache zu lernen, die ich bekomme, nur der Mangel an Design in der Steuerung frustriert mich. Aber wieder denke ich, das ist ein Problem mit .net, und ich sollte es nicht auf C# herausnehmen. – Tester101

Verwandte Themen