Variabelnamn i C

Här diskuteras programmering och utveckling
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Variabelnamn i C

Inlägg av Johnny Rosenberg »

När det gäller variabelnamn i C så har jag sett att de flesta skriver med enbart gemener och ibland använder ett understreck, exempelvis:

Kod: Markera allt

int min_variabel;
Har också förstått att man inte använder versaler då dessa hellre används för konstanter, och då är det enbart versaler som avses.

Men personligen gillar jag inte understreck och jag hade hellre skrivit så här:

Kod: Markera allt

int MinVariabel;
Anses detta allmänt vara direkt felaktigt, så till den milda grad att man alltid bör undvika det? I C++ duger det ju tydligen…
Senast redigerad av 1 Johnny Rosenberg, redigerad totalt 28 gånger.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Variabelnamn i C

Inlägg av Konservburk »

Det beror på vem man frågar, men varken gnu- eller kernel-stilen gillar annat än små bokstäver och understreck. Det här är vad gnu säger om saken:
http://www.gnu.org/prep/standards/standards.html#Names skrev:Please use underscores to separate words in a name, so that the Emacs word commands can be useful within them. Stick to lower case; reserve upper case for macros and enum constants, and for name-prefixes that follow a uniform convention.

For example, you should use names like ignore_space_change_flag; don't use names like iCantReadThis.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Variabelnamn i C

Inlägg av m!rage »

Programmerade Java en gång i tiden. Boken jag lärde mig från förespråkade variabelnamn i stil med "iCantReadThis", alltså liten bokstav i början och sedan börja varje nytt ord med stor bokstav.
Personligen tycker jag att detta går fortare att skriva då man bara behöver trycka ner skift (som man ändå ofta har lillfingret på) för att påbörja nytt ord istället för att både trycka ner skift och dessutom trycka på -
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Variabelnamn i C

Inlägg av Konservburk »

m!rage skrev:Personligen tycker jag att detta går fortare att skriva då man bara behöver trycka ner skift (som man ändå ofta har lillfingret på) för att påbörja nytt ord istället för att både trycka ner skift och dessutom trycka på -
Du förutsätter en tangentbordslayout där _ ligger på shift+- och att man dessutom faktiskt skriver ut variabelnamnet manuellt istället för att låta det autokompletteras på lämpligt sätt.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Variabelnamn i C

Inlägg av Johnny Rosenberg »

Funderar bara på varför den ena metoden duger bra i C++ medan den förkastas i C.

Nåja, för att komma runt det hela (slippa använda det fula ”_”-tecknet) får jag väl börja använda kortare variabelnamn istället: a, b, x, y och så vidare. Det blir säkert populärt…

;D

Fast en metod är ju så klart att använda DennaMetod och sedan skriva ett makro som konverterar till denna_metod om man någon gång (mot alla tänkbara odds) skulle komma på den befängda idén att dela med sig av sitt skräp…

:o
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Christian Johansson
Inlägg: 1235
Blev medlem: 17 feb 2007, 20:31
OS: Xubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Eslöv

Re: Variabelnamn i C

Inlägg av Christian Johansson »

På mitt jobb har man under många år haft namnkonventionen MyVariable för variabler i C ända fram till det nyaste projektet då man har gått över till myVariable. Vet inte riktigt varför.
Toledomahn
Inlägg: 90
Blev medlem: 09 jul 2010, 08:58
OS: Ubuntu

Re: Variabelnamn i C

Inlägg av Toledomahn »

@Johnny:
Fast en metod är ju så klart att använda DennaMetod och sedan skriva ett makro som konverterar till denna_metod om man någon gång (mot alla tänkbara odds) skulle komma på den befängda idén att dela med sig av sitt skräp…
Om du söker lite på nätet så hittar du säkert ett macro som redan finns.
Tell me over and over and over again!:

http://www.youtube.com/watch?v=tWDVl-QgM7M
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Variabelnamn i C

Inlägg av m!rage »

@Johnny Rosenberg
Verkar väldigt dumt att ha flera namn på samma variabel - det borde bara skapa förvirring. Om du har gjort ett program from scratch och delat ut så är det du som satt programmeringsstilen som andra får rätta sig efter om de vill vara med och förbättra programmet. Förresten är det väl ingen som kommer döda dig för att du använder stora bokstäver istället för understreck för att påbörja nytt ord.
@Konservburk
Riktiga män programmerar i Notepad!! ;D Eller iaf i gedit... För mig som mest jobbar med små program till inbyggda system känns det lite overkill att skapa ett "projekt" i ett stort IDE
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Variabelnamn i C

Inlägg av mcNisse »

Utanför ämnet: Nu öppnar för det stora stora bråket! Alla vet att emacs är bäst... ;D
Toledomahn
Inlägg: 90
Blev medlem: 09 jul 2010, 08:58
OS: Ubuntu

Re: Variabelnamn i C

Inlägg av Toledomahn »

Emacs har väl gått i stå vad jag vet?
Tell me over and over and over again!:

http://www.youtube.com/watch?v=tWDVl-QgM7M
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Variabelnamn i C

Inlägg av mcNisse »

Vad har du fått det ifrån?
Toledomahn
Inlägg: 90
Blev medlem: 09 jul 2010, 08:58
OS: Ubuntu

Re: Variabelnamn i C

Inlägg av Toledomahn »

Det var vad jag läst på nätet men jag hade fel nu när jag kollade närmare: http://lists.gnu.org/archive/html/info- ... 00000.html Där ser man vad man missar när man inte håller sig ajour.
Tell me over and over and over again!:

http://www.youtube.com/watch?v=tWDVl-QgM7M
Användarvisningsbild
Substrata
Inlägg: 71
Blev medlem: 13 apr 2010, 11:01
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: Variabelnamn i C

Inlägg av Substrata »

Grundläggande är att C har ett platt namnrum för funktioner, så _ används vanligtvis för att undvika namnkrockar. C++ däremot kan dela upp namnrummet i mycket större grad. Specifika konventioner som camelCase eller separering med understreck är dock kulturella. Det står dig fritt att välja mellan UserAgentShutdown(...) eller user_agent_shutdown(...). Att ha olika konventioner i samma projekt luktar dock inte så bra, och du ska i det avseendet tänka på att du har beroenden som libc.
Toledomahn
Inlägg: 90
Blev medlem: 09 jul 2010, 08:58
OS: Ubuntu

Re: Variabelnamn i C

Inlägg av Toledomahn »

@Johnny:

Gör ett macro om du vill, det är inte så svårt att ta en tangent som du inte använder så ofta, men ändå är lätttillgänglig med endast ett knapptryck och göra den till ett _
Tell me over and over and over again!:

http://www.youtube.com/watch?v=tWDVl-QgM7M
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Variabelnamn i C

Inlägg av Lars »

m!rage skrev:Verkar väldigt dumt att ha flera namn på samma variabel - det borde bara skapa förvirring.
Jag upptäckte nyligen att CAPL inte riktigt skiljer på versaler och gemener, det är riktigt läskigt! Så TestWaitForTimeout() är faktiskt samma sak som testwaitfortimeout(). Usch!

Apropå Emacs så används ofta bindestreck i elisp, som t.ex. funktionen save-buffer. Men det är väl bara i LISP-dialekter det ens är möjligt.
Användarvisningsbild
cthulhu
Inlägg: 789
Blev medlem: 05 jan 2009, 14:11
OS: Debian

Re: Variabelnamn i C

Inlägg av cthulhu »

Emacs har väl gått i stå vad jag vet?
YOU LIE! :-X
Nej, seriost nu: faktum ar att utvecklingen av Emacs har snarare upplevt nagot av en tempo-okning de senaste aret efter att ledningen fatt en liten fornyelse. Nydligen slapptes v23.2.

EDIT: @Toledomahn, ah, ser din lank nu ang. 23.2. ;)
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Variabelnamn i C

Inlägg av Johnny Rosenberg »

m!rage skrev:@Johnny Rosenberg
Verkar väldigt dumt att ha flera namn på samma variabel - det borde bara skapa förvirring. Om du har gjort ett program from scratch och delat ut så är det du som satt programmeringsstilen som andra får rätta sig efter om de vill vara med och förbättra programmet. Förresten är det väl ingen som kommer döda dig för att du använder stora bokstäver istället för understreck för att påbörja nytt ord.
@Konservburk
Riktiga män programmerar i Notepad!! ;D Eller iaf i gedit... För mig som mest jobbar med små program till inbyggda system känns det lite overkill att skapa ett "projekt" i ett stort IDE
Nja, jag tänkte väl inte ha flera namn på samma variabel. Tänkte väl i så fall ha min egen version av programmet bara för mig, en version som ingen annan kommer att få se, medan versionen som skapas av det eventuella makrot får bli den officiella versionen.

Men visst kan det röra till sig om exempelvis någon skickar en patch och man kanske vill skriva om den och så vidare. Då får man ju även ha ett makro som gör om variablerna åt andra hållet…

Eller så skriver man ett som först analyserar vilken konversion man har och sedan konverterar till den andra…

Notepad är ju i mitt fall att gå över ån efter vatten. Då måste jag ju köra den via Wine i så fall. Verkar lite onödigt. För tillfället är det Gedit jag använder men tidigare har jag använt Emacs. Gav Gedit en ny chans när jag upptäckte att man lagt till lite tilläggsprogram sedan jag kollade senast, bland annat ”Textsnuttar” som jag fann användbart. Gjorde samma sak tidigare i Emacs, men det verkar vara enklare att skapa sådana i Gedit.

Dock saknar jag i Gedit att tabbstopp kommer automatiskt efter rader med nyckelord som ”for”, ”while” och så vidare, så att man i princip aldrig behöver tabba manuellt. Men om någon känner till ett tilläggsprogram för det så är det bara att hojta till.

Och autokomplettering av variabler och typer hade ju också underlättat lite.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Variabelnamn i C

Inlägg av m!rage »

Notepad var ett skämt :) det är ett skitprogram som inte klarar någonting. Gedit funkar bra, det är dock inte en ren programmerings-editor, därför finns inte saker som autokomplettering. Men som du säger kanske det finns tillägg för det
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Variabelnamn i C

Inlägg av Johnny Rosenberg »

m!rage skrev:Notepad var ett skämt :) det är ett skitprogram som inte klarar någonting. Gedit funkar bra, det är dock inte en ren programmerings-editor, därför finns inte saker som autokomplettering. Men som du säger kanske det finns tillägg för det
Fast det finns säkert folk som tycker att Notepad är det bästa… Liksom det finns folk som föredrar Nano. Alla är vi olika.

Själv skulle jag nog helst jobba i Emacs, men för att kunna använda det riktigt optimalt lär jag nog lära mig Elisp ordentligt, men det tar emot. Lisp över huvud taget tar emot rejält för mig, jag orkar bara inte sätta mig in i det. Det var likadant när jag fick för mig att jag skulle skriva plugins till Audacity i Nykvist, som ju är någon form av lisp. Lyckades aldrig motivera mig mer än att lära mig grunderna.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Variabelnamn i C

Inlägg av dmz »

Att konvertera all kod enligt vad du skrivit verkar... jättekonstigt.
Framförallt med just variabelnamn... var bara consistent genom all kod du
skriver. Om du skall skicka patchar så skall du dock anpassa dig efter rådande
stil, annars blir de garanterat inte accepterade.

FooBar är PascalCase och det är rätt ovanligt. Vanligare är camelCase (fooBar),
vilket jag stött på mest i Java, javascript och dylika skrämmande ting.

Mina högst perlsonliga åsikter är foo_bar över fooBar / FooBar (eller andra
idiotiska ting så som FOOBAR / FoObAr (ja... det finns folk som gör så. Jag
skriver om ett annars väl fungerande program från scratch där upphovsmakaren har
noll consistency rakt igenom, just på grund av att det är helt omöjligt att
maintaina)), trots att det kan anses vara osexigt.

Jag föredrar också foo(bar()) över foo bar (sistnämnda ej legal i C dock) och
jag brukar generellt parantesera ordentligt då jag anser att det ger en bättre
överblick (jag är dock ingen lispare).

Det är en annan sak vad gäller indentering (K&R vs GNU vs Linux vs Allman etc).
Jag vet inte hur det förehåller sig med C eller andra språk, men som alla känner
till så är Perl magiskt, se på detta:

Kod: Markera allt

%z=(f=>[106,97]);
%f=(f=>sub{return
    sprintf"%sa%s%s%sp%.dh,
    ",chr@{$z{f}}[0]},);
printf("%s","@{[$f{f}->()]}");
Och så lite applicerar vi lite magi:

Kod: Markera allt

> perltidy japh5.pl

%z = ( f => [ 106, 97 ] );
%f = (
    f => sub {
        return sprintf "%sa%s%s%sp%.dh,
", chr @{ $z{f} }[0];
    },
);
printf( "%s", "@{[$f{f}->()]}" );
Eller:

Kod: Markera allt

$c='python';$_=`printf hack`;$_=~s;ck;;;;$c=~s%^(?!\x68)(.)(?2)(?1)(.)(?1)(?2)(?<!.{4}h)$%$2%;print j.substr($_,1),p,$c.",\n"
Och:

Kod: Markera allt

$c = 'python';
$_ = `printf hack`;
$_ =~ s;ck;;;
$c =~ s%^(?!\x68)(.)(?2)(?1)(.)(?1)(?2)(?<!.{4}h)$%$2%;
print j. substr( $_, 1 ), p, $c . ",\n"
Med perltidy så kan du skapa profiler enligt exakt din egen, personliga stil.
Detta gör alltså att när du skall patcha någon annans kod, kan du köra den
genom detta magiska filter först, editera outputten, som ser ut precis som om
du själv skulle skrivit det, och, när du är klar, återställa enligt den stil
skaparen använder sig av.

Mycket smidigt då det, förutom den vanliga irritationen över att folk inte kodar
som folk, även kan bli praktiska problem (tabs vs spaces t.ex).

Angående 'autocompletion', vim har en strålande sådan som inte bara sträcker sig
över aktuell fil, se:
Bild

Men nu kanske jag gled iväg lite...
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Skriv svar

Återgå till "Programmering och webbdesign"