Autore Topic: [Android] Numero di righe di codice  (Letto 2149 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
[Android] Numero di righe di codice
« il: 14 Febbraio 2012, 16:44:16 »
Ho analizzato la quantità di codice presente nel progetto su cui sto attualmente lavorando. E' un progetto di piccole dimensioni, ma si possono tirare fuori delle interessanti statistiche sul mio modo di scrivere il codice.

Codice: [Seleziona]
<?xml version="1.0"?><results>
<header>
  <cloc_url>http://cloc.sourceforge.net</cloc_url>
  <cloc_version>1.55</cloc_version>
  <elapsed_seconds>1</elapsed_seconds>
  <n_files>289</n_files>
  <n_lines>32079</n_lines>
  <files_per_second>289</files_per_second>
  <lines_per_second>32079</lines_per_second>
</header>
<languages>
  <language name="Java" files_count="144" blank="4681" comment="3562" code="17625" />
  <language name="XML" files_count="145" blank="788" comment="406" code="5017" />
  <total sum_files="289" blank="5469" comment="3968" code="22642" />
</languages>
</results>

Il programma usato per l'analisi si chiama CLOC (Count Lines of Code), la sintassi che ho usato è "cloc.exe pathdelprogetto --xml".

Notiamo come il progetto sia composto da 144 file in Java e 145 in XML.
Togliendo i commenti, e contando le linee di codice, i file Java sono mediamente 3 volte e mezzo più lunghi di quelli XML, nello specifico ci sono circa 122 righe di codice "effettivo" (al netto di commenti e righe bianche) per file Java, mentre abbiamo una media di 34 righe per i file XMl (si tratta soprattutto di file di layout, strutturati in moduli da comporre tramite il tag <include> o tramite inflazione a runtime).

In media i miei file Java hanno 1 riga di commento ogni 7 righe totali. Considerando che in alcuni file (pochi) sono presenti interi blocchi di codice temporaneamente commentati (e che verranno eliminati a breve), la media è un po' falsata. Credo che pulendo il codice dovremmo attestarci intorno ad un rapporto 1:10.
I file XML sono molto meno commentati (anche perchè l'XML è già verboso di suo), con una media di 1 riga di commento ogni 15.

Da queste statistiche si desume che preferisco suddividere i miei progetti in molti file, ma piccoli, con un discreto numero di commenti e prediligo riversare su XML quante più informazioni possibile, sfruttando così il sistema di gestione delle risorse di Android, che carica la versione giusta di un XML in base alla dimensione dello schermo ed all'orientamenteo.

Non si riesce ad estrarre altro da questi pochi dati, ma è pur sempre una materia interessante che porta a fare riflessioni di livello generale sulle metodologie di progettazione del software.  :geek:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: [Android] Numero di righe di codice
« Risposta #1 il: 14 Febbraio 2012, 17:43:12 »
molto interessante  :ugeek:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: [Android] Numero di righe di codice
« Risposta #2 il: 14 Febbraio 2012, 18:20:28 »
Ottimo. Ho fatto la stessa cosa sul mio progetto per Windows Phone 7:
Codice: [Seleziona]
d:ProgsProgrammingMisc>cloc-1.55 C:tmpSwarm --xml
      95 text files.
      95 unique files.
      14 files ignored.

<?xml version="1.0"?><results>
<header>
  <cloc_url>http://cloc.sourceforge.net</cloc_url>
  <cloc_version>1.55</cloc_version>
  <elapsed_seconds>1</elapsed_seconds>
  <n_files>81</n_files>
  <n_lines>16780</n_lines>
  <files_per_second>81</files_per_second>
  <lines_per_second>16780</lines_per_second>
</header>
<languages>
  <language name="C#" files_count="40" blank="1830" comment="1322" code="7265" />
  <language name="XAML" files_count="25" blank="380" comment="57" code="3040" />
  <language name="XML" files_count="3" blank="0" comment="0" code="1730" />
  <language name="MSBuild scripts" files_count="1" blank="0" comment="8" code="781" />
  <language name="HTML" files_count="11" blank="42" comment="0" code="288" />
  <language name="CSS" files_count="1" blank="6" comment="0" code="31" />
  <total sum_files="81" blank="2258" comment="1387" code="13135" />
</languages>
</results>
Mi ha sorpreso molto la presenza di tutti quei commenti, sia nei file C# che in quelli XAML, perché... i commenti nel mio codice sono roba rarissima. :D

Credo la stragrande maggioranza siano quelli generati automaticamente da Visual Studio.

Comunque si vede pure che non uso tantissimi file, e tra l'altro molti sono generati automaticamente da VisualStudio.

Antonio, tu hai lasciato tutti i file contenuti nella cartella del progetto, come ho fatto io? Perché in quella cartella c'è di tutto: anche documenti con specifiche, mockup, annotazioni, ecc. :D

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Android] Numero di righe di codice
« Risposta #3 il: 14 Febbraio 2012, 18:38:49 »
I miei progetti Android sono strutturati più o meno tutti così:

Uso il simbolo "+" per indicare la profondità della cartella

Documenti (si, quella cartella lì)
+ workspace (calderone generale di Eclipse)
++ nome_progetto (progettini sperimentali, roba varia)
++ repoprojects (working copies di progetti presenti su SVN)
+++ nome_progetto (progetti di lavoro)
+ Signed Builds (file apk firmati digitalmente, pronti per la pubblicazione)
+ docs
++ nome_progetto (file di documentazione assortiti, mockup grafici, tabelle, specifiche, file grafici grezzi, ecc...)

Il progetto android, cioè Documentiworkspacerepoprojectsnome_progetto, è strutturato nel modo classico dei progetti Android, cioè src, bin, gen, res, libs, file di progetto e manifest.
src, res, manifest e file di progetto sono su SVN, mentre gen, bin, libs sono impostati come "ignore on commit".

Internamente i source sono organizzati per package. Nel caso di questa applicazione ho solo due package interni, ma è organizzata maluccio.
Quando / Se avrò il tempo di fare un refactoring, separerò il progetto in 3 parti:
- framework
- videoplayer
- customization

In pratica lo stesso codice lo usiamo per N applicazioni, cambia solo un feed generato dal server e alcuni parametri grafici (font, variazioni di layout, colori, immagini di background, icone, localizzazione, ecc...).

Una volta scorporato (in realtà è facile perchè già internamente le classi sono totalmente disaccoppiate), posso mettere tutta la business logic in una libreria che chiamerò framework.jar e un simpleplayer.jar che includerò nel progetto. Le parti "variabili" da un programma all'altro saranno implementate con un sistema di "override". Cioè creerò una classe che si occuperà di fare lo skinning, fornendo le implementazioni di default di tutte le possibili parti configurabili.
Così, se devo fare una nuova app in cui cambia solo icona, titolo, sfondo e feed xml, mi basta clonare il progetto, creare un solo file Java che deriva la classe FrameworkOptions (nome inventato sul momento) ed effettua l'override dei metodi getIcon, getTitle, getBackground e getFeed.

Ecco, questo è buttato giù come mi viene, magari da qui a quando lo implementerò mi verrà in mente qualcosa di più elegante.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: [Android] Numero di righe di codice
« Risposta #4 il: 14 Febbraio 2012, 18:52:17 »
Lavorando al mio progetto m'è venuta voglia di rifattorizzare le parti più "astratte" / riutilizzabili in un progetto a parte dal qualche importarle alla bisogna, ma alla fine non ho avuto il tempo di farlo.

Comunque le statistiche le hai generate da Documentiworkspacerepoprojectsnome_progetto ?

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Android] Numero di righe di codice
« Risposta #5 il: 14 Febbraio 2012, 18:59:31 »
Citazione da: "cdimauro"
Lavorando al mio progetto m'è venuta voglia di rifattorizzare le parti più "astratte" / riutilizzabili in un progetto a parte dal qualche importarle alla bisogna, ma alla fine non ho avuto il tempo di farlo.
Questi progetti li faccio per l'azienda, e lo scheduling mi impedisce fisicamente di trovare il tempo di fare refactoring. Al massimo mi concedono il bugfixing :lol:
Citazione
Comunque le statistiche le hai generate da Documentiworkspacerepoprojectsnome_progetto ?
esattamente :-)

Nel workspace ho una quindicina di progetti tutti simili a quello. Per questioni commerciali, sono tutti progetti che non avranno MAI un update. Però quando ho tempo voglio fare quella modifica che ti ho detto, in modo da poter updatare in una botta sola anche 10-20 apps, semplicemente aggiustando le due libs che, essendo sharate, verranno incluse in tutti i progetti da esse dipendenti.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: [Android] Numero di righe di codice
« Risposta #6 il: 14 Febbraio 2012, 19:08:20 »
Con tutti quei progetti, è una cosa da fare.

Io l'avrei fatto al secondo progetto, ma chissà se e quando sarà ormai. :D

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Android] Numero di righe di codice
« Risposta #7 il: 14 Febbraio 2012, 20:15:33 »
Citazione da: "cdimauro"
Con tutti quei progetti, è una cosa da fare.

Io l'avrei fatto al secondo progetto, ma chissà se e quando sarà ormai. :D

Io purtroppo sono stato assunto a metà dell'opera e ho ereditato tutti sti progetti lasciati a metà, non ti dico che contentezza  :lol:

Il mio primo passo è stato unificare la versione Tablet con la versione Smartphone in un unico APK che si autoconfigura tramite gli XML, usando la Support Library V4 e i Fragment.

Queste due versioni, originariamente fatte da due developer diversi (di cui quello del tablet bravino, l'altro scarsissimo), le ho smontate, rimontate, sistemate e nel frattempo effettuavo dei "branch" per rilasciare le varie apps su richiesta per il committente (quindi ciascuna ha features/bugs diversi). Ora lo sviluppo si è fermato, il feature set è stato finalmente congelato e sarebbe il momento giusto per il refactoring.

Ora non so se l'azienda mi lascerà fare il refactoring o se mi sposterà su qualcosa di nuovo. La cosa buona è che dal prossimo progetto partirò da zero  :lol:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: [Android] Numero di righe di codice
« Risposta #8 il: 15 Febbraio 2012, 08:13:14 »
Ti capisco perfettamente, ma sai qual è il più grosso difetto di noi programmatori? Siamo fottutamente egoisti / egocentrici, e vorremmo che tutti si uniformassimo alla nostra "visione".

Quando il mio codice finisce nelle mani degli altri ho notato due comportamenti. Quelli che dicono "il tuo codice è bellissimo" (senza manco una riga di commento, eh! :D) e si fermano qui; e quelli che ogni tanto mi chiedono informazioni su cosa fa qualche riga di codice che usa qualche costrutto sintattico di Python (generalmente) perché ho la tendenza a usare quasi tutto ciò che offre un linguaggio di programmazione. Insomma, le critiche sono merce rara, mentre i commenti positivi si sprecano (i miei ex-colleghi mi chiamavano "l'esteta del codice").

Quando succede il contrario, cioè io che prendo in mano roba degli altri, nel 99% dei casi sogno un mix di Predator alla fine del film con l'alieno che attiva la bomba per portarsi all'inferno tutti, Sansone che tira giù le colonne del tempio uccidendo tutti i filistei, ma anche Michael Douglas in "un giorno di ordinaria follia"...

Sì, divento molto cattivo, ed è meglio che mi si stia alla larga. :D

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Android] Numero di righe di codice
« Risposta #9 il: 15 Febbraio 2012, 10:00:17 »
Citazione da: "cdimauro"
[...]

Quando succede il contrario, cioè io che prendo in mano roba degli altri, nel 99% dei casi sogno un mix di Predator alla fine del film con l'alieno che attiva la bomba per portarsi all'inferno tutti, Sansone che tira giù le colonne del tempio uccidendo tutti i filistei, ma anche Michael Douglas in "un giorno di ordinaria follia"...

Sì, divento molto cattivo, ed è meglio che mi si stia alla larga. :D

Si, capita anche a me, peccato che qui non si trovano facilmente negozi nazisti di armi  :lol:
Però potrei fare parecchio danno con la sola mazza da baseball!

Sai che ti dico? Vado a prendere una Coca Cola nel negozietto cinese qui di fronte...  :violence-stickwhack:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Android] Numero di righe di codice
« Risposta #10 il: 15 Febbraio 2012, 11:13:30 »
Anzi... mi prendo una Cocacuela!

[youtube:3spl3lwi]http://www.youtube.com/watch?v=x03UsEYtPHk[/youtube:3spl3lwi]

 :lol:  :lol:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

AmigaCori

  • Visitatore
Re: [Android] Numero di righe di codice
« Risposta #11 il: 15 Febbraio 2012, 11:30:45 »
Citazione da: "TheKaneB"
Sai che ti dico? Vado a prendere una Coca Cola nel negozietto cinese qui di fronte...  :violence-stickwhack:

Questo e' stato comprensibile anche a me.  :geek:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: [Android] Numero di righe di codice
« Risposta #12 il: 15 Febbraio 2012, 13:36:32 »
Citazione da: "cdimauro"
Ti capisco perfettamente, ma sai qual è il più grosso difetto di noi programmatori? Siamo fottutamente egoisti / egocentrici, e vorremmo che tutti si uniformassimo alla nostra "visione".

Quanto è vero...  :lol:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re: [Android] Numero di righe di codice
« Risposta #13 il: 16 Febbraio 2012, 03:50:18 »
Mi avete fatto venir voglia di controllare un po' i miei progettini...
secondo me viene fuori una situazione più da TheKaneB, con tanti file.

Citazione da: "cdimauro"
Ti capisco perfettamente, ma sai qual è il più grosso difetto di noi programmatori? Siamo fottutamente egoisti / egocentrici, e vorremmo che tutti si uniformassimo alla nostra "visione".
Certo che voglio che gli altri si uniformino a me... ma perchè ovviamente io sono il migliore, gli altri non potrebbero mai raggiungere una soluzione più elegante della mia. :snooty: :ugeek:
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: