Avatar billede verba Nybegynder
12. juni 2004 - 14:22 Der er 11 kommentarer og
2 løsninger

Navngivning af klasser!

Hejsa.
Jeg har efterhånden læst mange coding standards igennem. Og er også blevet gevaldigt meget klogere.

Men jeg har alligevel noget jeg mangler et svar på.

Udfra det jeg har læst navngives en klasse blot ved navn noget ala.
class Invoices

og vha. namespacet bør man så fortælle selve firmanavnet.

Hvis nu 2 forskellige namespaces indeholder 2 ens navngivne klasser - hvad så? Jeg mener når de begge er i brug vha using.

Ville det ikke være bedre at navngive sin klasse med firmanavns initialer også og samtidig virkelig vise at det var en klasse, lidt ligesom man gør med interfaces?

Firmaet hedder Elite Design

Altså:
class CEdInvoices

er jeg på vildspor eller hvad ?
Avatar billede strych9 Praktikant
12. juni 2004 - 19:53 #1
næh ikke helt..

Selv om du har begge namespaces i using, så kan du vel godt stadigvæk få adgang til klassen gennem den fulde sti.

Jeg tror egentlig bare at de primære ting du skal tage stilling til er:

Er din navngivning let at skrive? Gider du at give hver enkelt klasse de fornavne?
Er det let at læse når du skal finde bugs?
Kunne det tænkes at der vil være tilfælde hvor koden eller karakteren af projektet ændres således at alle "CEd" prefixes skal skiftes ud? (kritisk fejl)
Har du tænkt dig at dokumentere din kode så nye folk (og dig selv, om 2 måneder) kan finde ud af hvad pokker det egentlig var at CEd betød?

og i det hele taget er det vel smag og behag, hvis altså man kan styre udenom de fælder der ligger i ovenstående spørgsmål..
Avatar billede arne_v Ekspert
13. juni 2004 - 18:23 #2
Konventionen med at angive type i første del af navn er meget populær
i f.eks. MS VC++.

Men Microsoft anbefaler den ikke til C#. En af de få undtagelser er I til interfaces.

Hvad man foretrækker er religion ikke videnskab.

Som strych9 skriver så kan man altid referere til klasser ved fuld navn
X.Y.Z.Foobar og A.B.C.Foobar i tilfælde af problemer med using.

Generelt vil jeg sige at brug af 2 klasser med samme navn fra forskellige
namespaces tyder på dårligt design og noget skulle være separeret bedre.

Med hensyn til coding standards så gælder det generelt at:
  - der ikke en der er bedst
  - det er godt at have en
  - når man har en skal den følges
Avatar billede apocryphal Nybegynder
14. juni 2004 - 14:27 #3
Jeg plejer at bruge Alias-tingen til det, når jeg står overfor det.

Jeg har fornyligt haft et eksempel, hvor jeg brugte Windows Media Encoder og Managed DirectX.

Begge namespaces havde klassen Audio.
Jeg skrev derfor:
using DX = Microsoft.DirectX.blablabla...;
Og så DX.Audio audio = new DX.Audio();

Det er et godt alternativ, i stedet for at skrive
Microsoft.DirectX.AudioVideoPlayback.Audio audio = new Microsoft.DirectX.AudioVideoPlayback.Audio();

Jeg bryder mig ikke om idéen med, at lade klassen beskrive dens namespace...

--
Jonas
Avatar billede janus_007 Nybegynder
14. juni 2004 - 17:53 #4
Nu blander jeg mig lige lidt så :O)

arne v -> hvorfor skriver du at MSFT ikke anbefaler den navngiving? Det er vel ikke sådan at du lige ligger inde med et link *G* - for vi har samme diskussion på jobbet!
Avatar billede arne_v Ekspert
14. juni 2004 - 19:35 #7
Når de snakker om hungarian notation så er det altså skikken med at lade
første del af navnet angive typen de mener.
Avatar billede verba Nybegynder
16. juni 2004 - 21:15 #8
Point uddeling....
Avatar billede arne_v Ekspert
16. juni 2004 - 21:17 #9
jo tak
Avatar billede arne_v Ekspert
16. juni 2004 - 21:20 #10
janus>

Klik på linkene ude i højre side for at se andet end interfaces. Af uransagelige
årsager skiftede den ike URL i adresse linien, så jeg fik lavet 5 identiske links.
Men der er Class, Method, Property, Static Field etc..
Avatar billede janus_007 Nybegynder
16. juni 2004 - 21:23 #11
arne v -> nu har jeg selv kodet i en del år efterhånden. Jeg startede egentlig med den lille sjove ZX Spectrum *GG*, anyway...

Du har fuldstændigt ret mht. til hungarian, der er mange der gerne vil have det, men jeg har faktisk ikke brugt den notation det sidste års tid.

Hungarian siger angiv variabler med type: strFirstName og intHeight intAge osv..

Jeg mener at variabelnavnet skal være beskrivende, og der er de fleste enige med mig.
Men i og med at variabel navnet er beskrivende kan det relateres til noget "real world scenario" og derved er firstname jo uden tvivl en string og age er sikkert en int.

Dvs. jeg skriver ovenstående som
firstName, height og age

Det er forholdvis nemt at regne typen ud med lidt øvelse!
Avatar billede strych9 Praktikant
16. juni 2004 - 22:08 #12
ja, jeg er en pointluder.. =)
Avatar billede apocryphal Nybegynder
17. juni 2004 - 09:56 #13
janus_007> Rart nok - jeg er ikke så glad for Hungarian - præcis af den grund du siger :)

Dog er det vidst Specificeret et sted i en MS Spec., at man skal skrive med stort - FirstName, Height, Age...

Personligt, skriver jeg notationen efter det sprog jeg bruger.
- altså i Java ville jeg skrive på samme måde som dig.
I .NET, bruger jeg Microsofts måde at gøre det på.

Hvis min kode ligner Microsofts eller Suns, så ved jeg da at folk har set måden at gøre det på før :)

--
Jonas
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester