

//edit meon: dit stond oorspronkelijk in het "Nieuw scherm"-topic: http://www.userbase.be/forum/viewtopic.php?t=14738
Bij het modulair coderen blijft de lengte nochtans ook beperkt... tijd voor een rewrite, ipv. nieuwe hardwarecrapiecorn schreef:Code groeit meer in de lengte dan in de breedte.
Tsjah, in de breedte ook hoor.crapiecorn schreef:Code groeit meer in de lengte dan in de breedte. Voor een goed overzicht te bewaren kan je je widescreen beter kantelen.
Code: Selecteer alles
<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, True)> Public Function AddKlant(ByVal Code As Integer, ByVal Bedrijfsnaam As String, ByVal Naam As String, ByVal Straat As String, ByVal Postcode As String, ByVal Gemeente As String, ByVal Provincie As String, ByVal Land As String, ByVal Tel1 As String, ByVal Tel2 As String, ByVal Email As String, ByVal Fax As String, ByVal Opmerkingen As String, ByVal Status As Nullable(Of Integer), ByVal Cash_Credit_Code_Nu As Nullable(Of Integer), ByVal Credit_Limit As Nullable(Of Decimal), ByVal Balance As Nullable(Of Decimal), ByVal VAT_Number As String, ByVal Country_Code As String, ByVal Customer_Reference As String, ByVal Number_of_Volvo_Vehicles As Nullable(Of Integer), ByVal Number_of_NonVolvo_Vehicles As Nullable(Of Integer), ByVal CDB_Code As String, ByVal Web_Address As String, ByVal Additional_Phone_Number_1 As String, ByVal Additional_Phone_Number_2 As String, ByVal Additional_Phone_Number_3 As String, ByVal Natureza_Juridica As String, ByVal CGC_CPF_Number As String) As Boolean
Code: Selecteer alles
Public Function AddKlant(
ByVal Code As Integer,
ByVal Bedrijfsnaam As String,
ByVal Naam As String,
ByVal Straat As String,
ByVal Postcode As String,
ByVal Gemeente As String,
ByVal Provincie As String,
ByVal Land As String,
...
Niet een paar underscores vergeten ?meon schreef:Dat kan je ook leesbaar onder mekaar zetten ehJe kan quasi elke taal (oké, geen VB) op 1 regel schrijven als ge wilt ...Code: Selecteer alles
Public Function AddKlant( ByVal Code As Integer, ByVal Bedrijfsnaam As String, ByVal Naam As String, ByVal Straat As String, ByVal Postcode As String, ByVal Gemeente As String, ByVal Provincie As String, ByVal Land As String, ...
Volgens de meeste conventions moet je zo functie opsplisen in meerdere lijnen, dit is totaal onleesbaar.DarthDavy schreef:[
Tsjah, in de breedte ook hoor.
Dit is een standaard functie uit één van mijn projecten:
Code: Selecteer alles
<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, True)> Public Function AddKlant(ByVal Code As Integer, ByVal Bedrijfsnaam As String, ByVal Naam As String, ByVal Straat As String, ByVal Postcode As String, ByVal Gemeente As String, ByVal Provincie As String, ByVal Land As String, ByVal Tel1 As String, ByVal Tel2 As String, ByVal Email As String, ByVal Fax As String, ByVal Opmerkingen As String, ByVal Status As Nullable(Of Integer), ByVal Cash_Credit_Code_Nu As Nullable(Of Integer), ByVal Credit_Limit As Nullable(Of Decimal), ByVal Balance As Nullable(Of Decimal), ByVal VAT_Number As String, ByVal Country_Code As String, ByVal Customer_Reference As String, ByVal Number_of_Volvo_Vehicles As Nullable(Of Integer), ByVal Number_of_NonVolvo_Vehicles As Nullable(Of Integer), ByVal CDB_Code As String, ByVal Web_Address As String, ByVal Additional_Phone_Number_1 As String, ByVal Additional_Phone_Number_2 As String, ByVal Additional_Phone_Number_3 As String, ByVal Natureza_Juridica As String, ByVal CGC_CPF_Number As String) As Boolean
Inderdaad lijkt mij een beter idee dan alles als parameter meegeven. Beetje refactoring toepassennogChoco schreef:Beetje offtopic, maar DarthDavy: kon je geen (nested) class gebruiken om al die parameters als 1 object te bundelen? ('t Is maar een suggestie)
Om dan maar helemaal off-topic te gaan, maar jah, die function bestaat ook met als parameter een klasse die een klant-object aanvaardt, maar er zijn een boel situaties waarbij AddKlant moet uitgevoerd worden waarbij de klasse Klant helemaal geen nut heeft en dan kan ik de keuze gaan maken door voor iedere van die situaties een eigen overloaded AddKlant te gaan schrijven of ik schrijf 1 generieke AddKlant die met alle situaties overweg kan (let erop dat al mijn parameters nullable objecten zijn, behalve de strings omdat die niet nullable kunnen zijn en dan als Nothing doorgegeven worden).nogChoco schreef:Beetje offtopic, maar DarthDavy: kon je geen (nested) class gebruiken om al die parameters als 1 object te bundelen? ('t Is maar een suggestie)
Ik was maar een voorbeeldje aan het geven dat widescreen wel handig kan zijn. En deze functie is opgesplitst met underscores in verschillende lijnen.crapiecorn schreef:
Volgens de meeste conventions moet je zo functie opsplisen in meerdere lijnen, dit is totaal onleesbaar.
Modulair coderen verhoogt de leesbaarheid niet altijd. Bv als je van een for lus en een daarin geneste lus 1 lus maakt. ipv die geneste lus gebruik je dan een berekening voor de 2de waarde. De volgende die dit leest zal er niet zo vlot overgaan. Ook ternaire operatoren vind ik niet zo vlot lezen.r2504 schreef:Bij het modulair coderen blijft de lengte nochtans ook beperkt... tijd voor een rewrite, ipv. nieuwe hardwarecrapiecorn schreef:Code groeit meer in de lengte dan in de breedte.
Verkorte versie van IF/ELSE toestanden, ook wel eens de IIF.DarthDavy schreef:Wat zijn ternaire operatoren?
Code: Selecteer alles
expressie 1 : expressie 2 ? expressie 3
Code: Selecteer alles
int min, a, b;
a = 5;
b = 3;
min = a < b ? a : b;
Code: Selecteer alles
if a < b
min = a;
else
min = b;
het gaat hier dan ook niet over hetzelfde. IFF is een functie en het zou me niet verwonderen als daar bij vb nog wat extra validatie achter steekt.DarthDavy schreef:De IIF is wel trager dan de conventionele IF...ELSE... constructie. Zeker in VB.
Code: Selecteer alles
int min = (a < b) ? a : b;
Daarom vind ik talen als python, vb ook minder leesbaar. Als je bv hebt leren programmeren met een C like syntax en dan moet je VB leren , not cool. Ik kan de keren niet meer tellen dat ik set methods typ ipv bla.property =GeertAki schreef:Ik vind die verkorte if-structuur anders leesbaarder dan de lange vorm, omdat je met heel weinig te lezen alles weet.
In java:Voor de rest vind ik dat bij elk code-blok (ook al is het slechts één lijn) accolades horen. Dat verkleint de kans op bugs, aangezien het telkens duidelijk afgescheiden is en als je een if-hebt met slechts één statement in en nadien komt er een tweede statement bij (door een andere programmeur of door jezelf), dan kan je die accolades wel eens vergeten toevoegen, zeker als je code niet goed geformatteerd was.Code: Selecteer alles
int min = (a < b) ? a : b;
Ik stel mijn instellingen hier ook wel op 120 karakters per regel ipv de standaard 80. Dat werkt prettiger vind ik.
Dan pak je toch gewoon C# ipv VB, net hetzelfde.crapiecorn schreef: Daarom vind ik talen als python, vb ook minder leesbaar. Als je bv hebt leren programmeren met een C like syntax en dan moet je VB leren , not cool. Ik kan de keren niet meer tellen dat ik set methods typ ipv bla.property =
Toen... tja, toen had m'n computer ook maar 1 KB geheugen, en later hadden we een Pascal compiler en editor tesamen die slechts 32 KB groot was. Vandaag de dag is het splashscreen al groter dan 32 KBDarthDavy schreef:maar toen ik leerde progammeren