Was ist eine Zeile Code?

stimmen
12

Ich weiß, es gibt keine definitiv „richtige“ Antwort auf diese Frage, aber wenn die Leute über Codezeilen zu sprechen, was bedeuten sie? In C ++ beispielsweise zählen Sie Leerzeilen? Bemerkungen? Linien mit nur einer offenen oder in der Nähe Klammer?

Ich kenne einige Leute LoC als Produktivitätsmaßnahme verwenden, und ich frage mich, ob es eine Standard-Konvention ist hier. Außerdem glaube ich, gibt es eine Möglichkeit, verschiedene Compiler zu zählen Zeilen Code zu bekommen - gibt es eine Standard-Konvention da?

Veröffentlicht am 09/12/2008 um 17:33
quelle vom benutzer
In anderen Sprachen...                            


20 antworten

stimmen
3

Was auch immer „wc -l“ zurückgibt, ist meine Nummer.

Beantwortet am 09/12/2008 um 17:36
quelle vom benutzer

stimmen
8

ich würde sagen

  • Kommentare zählen
  • Leerzeilen zählen, weil sie für die Lesbarkeit wichtig ist, aber nicht mehr als ein zusammenhängend
  • Linien mit Klammern zählen auch, aber die gleiche Regel wie für Leerzeilen gelten - dh 5 verschachtelte Klammern ohne Code zwischen ihnen als eine Zeile zählt.

Ich würde auch vorschlagen, demütig, dass jede Maßnahme, die Produktivität tatsächlich auf einem LoC Wert setzt Koje ist :)

Beantwortet am 09/12/2008 um 17:37
quelle vom benutzer

stimmen
0
  1. LOCphy: physisch Linien
  2. LOCbl: Blanklines Kommentarblocks Werden als Kommentarzeile gezählt
  3. LOCpro: Programmierleitungen (Erklärungen, Definitionen, Richtlinien & Code)
  4. LOCcom: Linien Kommentare

Viele verfügbare Tools geben Informationen Prozentsatz der gefüllten Linien und so weiter.

Sie müssen nur es betrachten, aber nicht nur auf sie verlassen.

LOC wächst massiv auf Beginn eines Projekts und nimmt oft nach Bewertungen;)

Beantwortet am 09/12/2008 um 17:38
quelle vom benutzer

stimmen
22

Nein, es gibt keine Standard-Konvention, und jedes Werkzeug, das sie zählt etwas unterschiedlich sein.

Dies kann machen Sie fragen: „Warum dann würde ich jemals LOC als Produktivitätsmaß verwenden?“ und die Antwort ist, weil es nicht Minster, wie Sie eine Codezeile zählen, solange Sie zählen sie konsequent können Sie eine Vorstellung von der allgemeinen Größe eines Projektes im Verhältnis zu anderen zu bekommen.

Beantwortet am 09/12/2008 um 17:38
quelle vom benutzer

stimmen
0

Ich denke, es als eine einzelne verarbeitbar Aussage. Beispielsweise

(1 Zeile)

Dim obj as Object

(5 Zeilen)

If _amount > 0 Then
  _amount += 5
Else
  _amount -= 5
End If
Beantwortet am 09/12/2008 um 17:39
quelle vom benutzer

stimmen
11

Werfen Sie einen Blick auf die Wikipedia - Artikel , vor allem die „ Measuring SLOC “ Abschnitt:

Es gibt zwei Haupttypen von SLOC Maßnahmen: körperliche SLOC und logischer SLOC. Spezifische Definitionen dieser beiden Maßnahmen sind unterschiedlich, aber die häufigste Definition der physikalischen SLOC ist eine Anzahl von Zeilen in dem Text des Quellcodes des Programms einschließlich Kommentarzeilen. Leerzeilen sind ebenfalls enthalten, es sei denn, die Codezeilen in einem Abschnitt von mehr als 25% Leerzeilen besteht. In diesem Fall Leerzeilen über 25% sind nicht auf Codezeilen gezählt.

Logische SLOC Maßnahmen versuchen, die Anzahl der „Aussagen“ zu messen, sondern ihre spezifischen Definitionen sind auf bestimmte Computersprachen (eine einfache logische SLOC Maß für C-ähnliche Programmiersprachen ist die Anzahl der auf Anweisungsabschluss Semikolons) gebunden. Es ist viel einfacher Werkzeuge zu schaffen, die physischen SLOC messen und die physikalischen SLOC Definitionen sind leichter zu erklären. Allerdings sind physikalische SLOC Maßnahmen empfindlich logisch irrelevant Konventionen Formatierung und Stil, während logische SLOC weniger empfindlich auf die Formatierung und Stilkonventionen. Leider sind SLOC Maßnahmen oft ohne Angabe ihrer Definition angegeben ist, und logische SLOC kann oft aus physischen SLOC deutlich unterschiedlich sein.

Betrachten Sie diesen Schnipsel von C-Code als ein Beispiel der Mehrdeutigkeit auftreten, wenn SLOC Bestimmung:

for (i=0; i<100; ++i) printf("hello");   /* How many lines of code is this? */

In diesem Beispiel haben wir:

  • 1 Physikalische Lines of Code LOC
  • 2 Logik Lines of Code lloc (für Anweisung und printf-Anweisung)
  • 1 Kommentar-Linie

[...]

Beantwortet am 09/12/2008 um 17:40
quelle vom benutzer

stimmen
2

„Lines of Code“ sollte alles, was Sie haben, gehören zu halten. Dazu gehören Kommentare, schließt aber Leerzeichen.

Wenn Sie dies als eine Produktivität Metrik verwenden, stellen Sie sicher, dass Sie angemessene Vergleiche machen. Eine Reihe von C ++ ist nicht das gleiche wie eine Linie von Ruby.

Beantwortet am 09/12/2008 um 17:42
quelle vom benutzer

stimmen
3

Wenn Sie LOC als Maß für die Produktivität verwenden, werden Sie plötzlich Ihre Programmierer schreiben viel mehr verbosely auf „Spiel das System“ finden. Es ist eine dumme Maßnahme, und nur dumme Menschen nutzen es für etwas mehr als prahlen.

Beantwortet am 09/12/2008 um 17:50
quelle vom benutzer

stimmen
1

LOC ist eine notorisch mehrdeutig Metrik. Einen ausführlichen Vergleich, es ist nur gültig, wenn der Code vergleichen, die in der gleichen Sprache geschrieben worden sind, mit dem gleichen Stil, durch das gleiche Team.

Es wird jedoch eine gewisse Komplexität Vorstellung bieten, wenn sie bei in einer Reihenfolge-of-Größenordnung Idee aussah. Ein 10000-line-Programm ist viel komplexer als ein 100-line-Programm.

Der Vorteil des LOC ist, dass wc -l es gibt, und es gibt keine wirkliche fancyness in Verständnis beteiligt oder es, im Gegensatz zu vielen anderen Software-Metriken zu berechnen.

Beantwortet am 09/12/2008 um 17:52
quelle vom benutzer

stimmen
1

Es gibt keine richtige Antwort.

Für informelle Schätzungen verwende ich wc -l.

Wenn ich brauche etwas rigoros zu messen, würde ich ausführbare Anweisungen messen. Ziemlich viel, was mit einer Erklärung Terminator (in der Regel Semikolon) oder mit einem Block endet. Für zusammengesetzte Anweisungen, würde ich jede Subanweisung zählen.

Damit:

int i = 7;                  # one statement terminator; one (1) statement
if (r == 9)                # count the if as one (1) statement
  output("Yes");      # one statement terminator; one (1) statement; total (2) for the if
while (n <= 14) {    # count the while as one (1) statement
  output("n = ", n);  # one statement terminator; one (1) statement
  do_something();   # one statement terminator; one (1) statement
  n++                       # count this one, one statement (1), even though it doesn't need a statement terminator in some languages
}                              # brace doesn't count; total (4) for the while

Wenn ich es in Scheme oder Lisp tat, würde ich Ausdrücke zählen.

Wie andere gesagt haben, was am wichtigsten ist, dass Ihre Zählung konsistent ist. Es kommt auch, was Sie mit diesem für. Wenn Sie nur ein potenzielles Neueinstellung lassen wollen wissen, wie groß Ihr Projekt ist, verwenden Sie wc -l. Wenn Sie wollen Planung zu tun und zu schätzen, dann möchten Sie vielleicht mehr formal erhalten. Sie sollten unter keinen Umständen zur Verwendung von LOC Basis Programmierer Entschädigung.

Beantwortet am 09/12/2008 um 18:17
quelle vom benutzer

stimmen
1

Sie sollten denken an „Codezeilen sein ausgegeben “, nicht „Codezeilen erzeugt “.

Die Dinge sollen so einfach wie möglich sein, so eine positive Benchmark auf Menge von Linien auf Basis der Erstellung ist schlechter Code ermutigend.

Darüber hinaus mit sehr wenig Code gelöst, einige Dinge, die sehr schwer Ende sind bis zu werden und einige Dinge, die sehr leicht (Standardcode wie Getter und Setter zum Beispiel) sind, können viele Linien in sehr wenig Zeit hinzuzufügen.

Wie für die ursprüngliche Frage, wenn ich Linien zählen würde, würde ich jede Zeile anders als aufeinanderfolgende Leerzeilen enthalten. Ich würde Kommentare auch enthalten, da sie (hoffentlich) nützliche Dokumentation sind.

Beantwortet am 09/12/2008 um 18:25
quelle vom benutzer

stimmen
0

Ich stimme mit den Stellen , die es sagen wird viele Möglichkeiten berichten und ist nicht eine wichtige Kennzahl. Sehen Sie diese immer hören-of-Entwickler-getting-Paid-per-line-of-Code .

Beantwortet am 09/12/2008 um 20:09
quelle vom benutzer

stimmen
2

1 Zeile = 4 Sekunden Messwert. Wenn es mehr als das dauert, um herauszufinden, was ich sage auf dieser Linie, dann ist die Linie zu lang.

Beantwortet am 09/12/2008 um 20:19
quelle vom benutzer

stimmen
0

Ich bin damit einverstanden w / die akzeptierte Antwort von Craig H, jedoch würde ich in der Schule hinzufügen, dass ich wurde gelehrt, dass weißer Raum, Kommentare und Erklärungen sollten nicht als „Programmzeilen“ in Bezug auf die Messung der Codezeilen gezählt werden von einem Programmierer für Produktivität Zwecke hergestellt - dh Ol‘‚15-Zeilen-pro-Tag‘-Regel.

Beantwortet am 09/12/2008 um 20:59
quelle vom benutzer

stimmen
1

Der Begriff des LOC ist ein Versuch, ein Volumen von Code zu quantifizieren. Wie in anderen Antworten erwähnt, ist es egal, was Sie speziell so lange eine einzige Zeile Code nennen, wie Sie konsistent sind. Intuitiv scheint es, dass ein 10-zeilige Programm kleiner als ein 100 Zeilenprogramm, das kleiner ist als ein 1000 Zeilenprogramm ist und so weiter. Man würde erwarten, dass es weniger Zeit in Anspruch nimmt zu schaffen, deubg und pflegt ein 100 Zeilenprogramm als ein 1000 Zeilenprogramm. Informell zumindest können Sie LOC ein grobes Gefühl für die Menge an Arbeit geben, die zum Erstellen, Debuggen und ein Programm mit einer bestimmten Größe beizubehalten.

Natürlich gibt es Orte, wo dies nicht bis hält. Zum Beispiel kann es sehr viel schwieriger sein, ein komplexer Algorithmus in 1000 Zeilen gemacht zu entwickeln als, sagen sie, ein einfaches Datenbank-Programm, das 2500 Zeilen verbraucht.

So LOC ist ein grobkörniges Maß Codevolumen, die Manager eine angemessene understading von der Größe eines Problems erhalten ermöglicht.

Beantwortet am 09/12/2008 um 21:12
quelle vom benutzer

stimmen
4

Jeder Tag, den ich mit weniger Codezeilen enden kann, aber so viel oder mehr Arbeits Funktionalität ... ist ein guter Tag. Die Möglichkeit, Hunderte von Zeilen Code zu entfernen und mit etwas aufzuwickeln, die genauso funktional ist, und besser verwaltbar, ist eine wunderbare Sache.

Davon abgesehen, es sei denn, Sie haben sehr strenge Code-Richtlinien in Ihrem Team, physikalische Zeilen Code ist eine nutzlose Statistik. Logische Zeilen Code ist immer noch nutzlos, aber als dest ist es nicht gefährlich irreführend.

Beantwortet am 09/12/2008 um 21:54
quelle vom benutzer

stimmen
0

Ich verwende wc -lfür eine schnelle Abschätzung der Komplexität eines Arbeitsbereiches. Da jedoch eine Produktivitäts metric LOC ist das Schlimmste . Ich halte es in der Regel ein sehr produktiver Tag , wenn meine wenn LOC Menge untergeht.

Beantwortet am 22/12/2008 um 00:44
quelle vom benutzer

stimmen
0

Ich kenne einige Leute LoC als Produktivitätsmaß verwenden

Könnten Sie mir bitte sagen , wer sie sind , so haben versehentlich ich nicht (oder noch schlimmer, arbeiten für ) sie?

Wenn ich in 1400 Zeilen mit Haskell implementieren kann, was ich auch in 2800 Zeilen mit C implementieren könnte, bin ich produktiver in C oder Haskell? Welche wird mehr Zeit in Anspruch nehmen? Welche wird mehr Fehler haben (Tipp: es ist linear in der LOC count)?

Ein Programmierer wert ist, wie viel seine Code-Änderungen (einschließlich von oder auf die leere Zeichenfolge) die Nummer auf Ihrem unteren Zeile erhöht. Ich kenne keine gute Art und Weise zu messen oder zu nähern. Aber ich weiß, dass jeder halbwegs messbare Metrik gamed werden kann und beziehen sich nicht, was Sie wirklich wollen. So nutzen sie nicht.

Davon abgesehen, wie zählt man LOCs? Einfach, Gebrauch wc -l. Warum ist das das richtige Werkzeug? Nun, Sie kümmern sich wahrscheinlich nicht über eine bestimmte Zahl, sondern um allgemeine Gesamt Trends (nach oben oder unten, und wie viel), über einzelne Trends (nach oben oder unten, Richtung zu ändern , wie schnell, ...) und über so ziemlich alles außer nur die Zahl 82.763.

Die Unterschiede zwischen dem, was die Werkzeuge Maßnahme wahrscheinlich nicht interessant. Es sei denn , Sie Beweise haben , dass die Zahl von Ihrem Werkzeug ausspucken (und nur das Werkzeug) korreliert mit etwas interessant, es als grober groben Schätzung verwenden; etwas anderes als Monotonie sollte nicht nur mit einem Korn , sondern ein eimer Salz genommen werden.

Zählen Sie, wie oft '\n'auftritt. Andere interessante Charaktere könnte sein , zu zählen ';', '{'und '/'.

Beantwortet am 19/03/2009 um 23:15
quelle vom benutzer

stimmen
0

In der .NET - Welt scheint es eine globale Vereinbarung zu sein , die eine Zeile Code (LOC) ein Debug - Sequenzpunkt ist . Eine Sequenz Punkt eine Einheit der Fehlersuche ist, ist es der Codeabschnitt in dunkelroten hervorgehoben , wenn einen Unterbrechungspunkt setzen. Mit Sequenzpunkt können wir reden logische LoC , und diese Metrik kann in verschiedenen .NET - Sprachen verglichen werden. Der logische LoC Code Metrik wird von den meisten .NET Werkzeugen einschließlich Visual Code metric, NDepend oder NCover unterstützt.

A 8 LoC Methode (Beginn und Klammern Sequenzpunkte enden, werden nicht berücksichtigt):

Alt-Text

Im Gegensatz zu physischer LoC (was bedeutet , nur die Anzahl der Zeile in einer Quelldatei zu zählen) die logische LoC hat den großen Vorteil , nicht auf Codierstil abhängig zu sein. Coding - Stil, wir uns alle einig , dass die physischen LoC Zählen von einer Größenordnung von einem Entwickler zu einem anderen variieren machen. Ich schrieb eine detaillierteren Blog - Post zum Thema: Wie zählen Sie die Anzahl der Zeilen Code (LOC)?

Beantwortet am 12/12/2010 um 19:12
quelle vom benutzer

stimmen
0

LOC verwendet, ist ein Programmierer die Leistung zu messen, wie die Qualität eines Gemäldes von seiner Größe zu beurteilen. LOC einzige „Wert“ so weit es mich betrifft, ist Ihre Kunden zu beeindrucken und Ihre Konkurrenz zu erschrecken.

Das heißt, ich würde denken, dass die Anzahl der kompilierten Anweisungen die am wenigsten mehrdeutige wäre. Dennoch haben schlechte Programmierer den Vorteil, dass sie unnötig ausführlichen Code zu schreiben neigen. Ich erinnere ersetzen einmal 800+ Linien wirklich schlechten Code mit 28 Linien. Ist das ein Slacker machen mich?

Alle Projektmanager, der LOC als primäre Leistungsmetrik verwendet, ist ein Idiot, die schlechten Programmierer verdient.

Beantwortet am 02/09/2016 um 00:40
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more