---
title: "Hakparanteser för en enkel if-sats?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/176525-hakparanteser-för-en-enkel-if-sats"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Lukaspojken"
published: "2009-01-26T13:15:10.000Z"
updated: "2009-01-29T15:29:16.000Z"
replies: 19
views: 1035
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/176525-hakparanteser-för-en-enkel-if-sats"
---

# Hakparanteser för en enkel if-sats?

## #1 — Lukaspojken, 2009-01-26T13:15Z

Vad tycker ni generallt om hakparanteser runt en-rads-if-satser och loop:ar?

Variant utan hakparanteser:

```
if (x)
   y = 1;
```

Sedan har vi varianten med hakparanteser:

```
if (x)
{
   y = 1;
}
```

Permalänk: https://www.webforum.nu/p/176525

## #2 — Eclipse, 2009-01-26T13:54Z

Om det funkar att använda mindre tecken är det ingen nackdel. Bara varken koden eller dokumentationen blir lidande.

Man får inte förkorta och förminska till vilket pris som helst!

Jag är inte så duktig på just dot net, men av ditt exempel ovan hade jag skippat måsvingarna.

hakparanteser = \[ \]

Ursäkta mig, jag hade skrivit det på en rad... Men din kod är kanske mer komplett än detta exempel ovan!?

Permalänk: https://www.webforum.nu/p/2166622

## #3 — spango, 2009-01-26T14:03Z

> **Lukaspojken skrev:**
>
> Vad tycker ni generallt om hakparanteser runt en-rads-if-satser och loop:ar?

Undviker helst måsvingarna när de inte behövs. Argumentet som brukar framföras för att aldrig utelämna dem är att man inte riskerar "dangling elses":

```
if (x)
    if (y) Foo();
else Bar();
```

Den här koden ger intrycket av att betyda samma som det här: 

```
if (x) {
    if (y) Foo();
} else Bar();
```

... men är förstås egentligen densamma som:

```
if (x) {
    if (y) Foo();
    else Bar();
}
```

Personligen tycker jag det är ett dåligt argument, eftersom vettiga editorer sköter indenteringen åt oss. Jag får mer nytta av att se mer kod på en skärmbild.

Permalänk: https://www.webforum.nu/p/2166623

## #4 — emission, 2009-01-26T23:00Z

Jag föredrar att använda måsvingar i alla lägen. Tycker att koden blir lite tydligare, och det blir smidigare att lägga in fler metoder i efterhand.

Permalänk: https://www.webforum.nu/p/2166680

## #5 — Ledel, 2009-01-26T23:06Z

Kan jag skippar jag måsvingarna.

Permalänk: https://www.webforum.nu/p/2166681

## #6 — sgtpepper, 2009-01-26T23:09Z

> **emission skrev:**
>
> Jag föredrar att använda måsvingar i alla lägen. Tycker att koden blir lite tydligare, och det blir smidigare att lägga in fler metoder i efterhand.

Samma här, som jag ser det så finns det ingen som helst anledning att skita i måsvingarna, vad är det man vill spara på - tecken, kodlängd? Jag tycker att det är god programmeringssed att alltid ha med dom.

Risken att det blir fel när man gör ett tillägg i koden minskas om man konsekvent blockar in sina vilkor med måsvingar.

Permalänk: https://www.webforum.nu/p/2166682

## #7 — Phorpher, 2009-01-27T07:20Z

Samma som emission och sgtpepper. Kod utan måsvingar kan ibland bli väldigt "kompakt". Jag föredrar att ha en hel del whitespace i min kod för att göra det lättare att läsa och måsvingarna hjälper till med det.

Permalänk: https://www.webforum.nu/p/2166690

## #8 — Nickemannen, 2009-01-27T07:21Z

> **emission skrev:**
>
> Jag föredrar att använda måsvingar i alla lägen. Tycker att koden blir lite tydligare, och det blir smidigare att lägga in fler metoder i efterhand.

Samma här fördelarna överväger nackdelarna, det blir konsekvent också när man alltid har måsvingar. :)

Permalänk: https://www.webforum.nu/p/2166691

## #9 — dAEk, 2009-01-27T08:24Z

> **Nickemannen skrev:**
>
> Samma här fördelarna överväger nackdelarna, det blir konsekvent också när man alltid har måsvingar. :)

Samma här! Eller ja, jag försöker hålla mig till att koda så men ibland är jag skyldig till att frångå denna princip men det är sällan och i ganska specifika fall. Har man ett gäng if-satser utan else (t.ex. när man fyller objekt och dess egenskaper från en reader) blir det kanske lite väl köttigt med alla måsvingar.

Permalänk: https://www.webforum.nu/p/2166699

## #10 — Pedda, 2009-01-27T10:25Z

Såna små ifsatser kortar jag ner

```
y = (x) ? 1 : y;
```

Permalänk: https://www.webforum.nu/p/2166717

## #11 — Jon, 2009-01-27T11:53Z

> Jag föredrar att använda måsvingar i alla lägen. Tycker att koden blir lite tydligare,

 

Samma här.

Är det små if-satser gillar jag också result = i \> 0 ? i : 666;

Permalänk: https://www.webforum.nu/p/2166729

## #12 — CatZ, 2009-01-27T13:30Z

Jag kör stenhårt på måsvingarna. Erfarenhet säger mig att jag rätt ofta får pilla dit dom lik förbaskat när det är dags för refactoring!

Anser inte att måsvingarna i if satser är rätt ställe att minimera raderna med kod.

Permalänk: https://www.webforum.nu/p/2166740

## #13 — Nickemannen, 2009-01-27T18:31Z

> **CatZ skrev:**
>
> Jag kör stenhårt på måsvingarna. Erfarenhet säger mig att jag rätt ofta får pilla dit dom lik förbaskat när det är dags för refactoring!
> 
> Anser inte att måsvingarna i if satser är rätt ställe att minimera raderna med kod.

För mig är inte } en kodrad alls håller man metoderna så små som man egentligen borde så bör det inte vara några problem med att få plats med metoden på skärmen när man har en if-sats med måsvingar :)

Permalänk: https://www.webforum.nu/p/2166782

## #14 — Lukaspojken, 2009-01-27T22:17Z

Jag gillar också måsvingarna och har kört med det. Men jag har den senaste tiden kommit i kontakt med fler if-satser och loopar utan måsvingar. Så jag har börjat ifrågasätta mitt sätt att koda just dessa bitar men jag håller med om att de bör finnas även om det innebär några extra rader kod.

Det ska givetvis vara måsvingar och inte hakparanteser... :)

Permalänk: https://www.webforum.nu/p/2166811

## #15 — sgtpepper, 2009-01-28T00:42Z

> **Lukaspojken skrev:**
>
> de bör finnas även om det innebär några extra rader kod.

Sätter man startparantesen på samma rad som statementet så blir det bara en extra rad. Det har man råd med:

```
if (foo > 1) {
  bar();
}
```

kontra

```
if (foo > 1)
  bar();
```

Permalänk: https://www.webforum.nu/p/2166824

## #16 — yohpops, 2009-01-28T09:37Z

> **sgtpepper skrev:**
>
> Sätter man startparantesen på samma rad som statementet så blir det bara en extra rad. Det har man råd med:
> 
>
>
> ```
> if (foo > 1) {
>   bar();
> }
> ```
>
> 
> 
> kontra
> 
>
>
> ```
> if (foo > 1)
>   bar();
> ```

Det behöver inte bli en rad till:

```
if (foo > 1) {
  bar();}
```

eller

```
if (foo > 1) {bar();}
```

Permalänk: https://www.webforum.nu/p/2166840

## #17 — Lukaspojken, 2009-01-28T10:18Z

Jag gillar inte den varianten där man flyttar måsvingen till första raden. Jag tycker det påverkar läsbarheten negativt. Att ha allt på en rad tycker jag heller inte om.

Denna variant tycker jag är svårare att läsa

```
if (x) {
   y = 1;
   ...
   ...
}
```

Än denna:

```
if (x) 
{
   y = 1;
   ...
   ...
}
```

Min blick letar efter första måsvingen och det känns svårare att finna den i första varianten.

Permalänk: https://www.webforum.nu/p/2166843

## #18 — freguz, 2009-01-28T10:30Z

Japp, snyggast är 

```
if (x) 
{
   y = 1;
   ...
   ...
}
```

Permalänk: https://www.webforum.nu/p/2166845

## #19 — Lukaspojken, 2009-01-29T15:23Z

Här kommer en if-sats som jag tycker var riktigt jobbig att titta på :)

```
GridView gv = (GridMode == GridType.Current) ? GridViewData : GridViewDataArchived;
```

Detta är en annan. Lite lättare men den tilltalar inte mitt öga...

```
LinkButtonSelectAll.Enabled = (gv.Rows.Count > 0) ? true : false;
```

När jag läser kod så vill jag snabbt få en förståelse för vad utvecklarens metod har för avsikt att göra. När jag stötte på ovanstående kodrader så var jag tvungen att stanna till och fundera ett tag. När man blir tvungen att stanna upp så här så stör det ens förmåga att snabbt förstå metoden. Vad tycker ni?

Permalänk: https://www.webforum.nu/p/2167011

## #20 — spango, 2009-01-29T15:29Z

> **Lukaspojken skrev:**
>
> Här kommer en if-sats som jag tycker var riktigt jobbig att titta på :)
> Detta är en annan. Lite lättare men den tilltalar inte mitt öga...
>
>
> ```
> LinkButtonSelectAll.Enabled = (gv.Rows.Count > 0) ? true : false;
> ```

Inte mitt öga heller, eftersom den är redundant:

```
LinkButtonSelectAll.Enabled = (gv.Rows.Count > 0);
```

Vad gäller första måsvingen, om den ska vara placerad på en egen rad eller tillsammans med "huvudet" (typ iffen) tycks, tillsammans med frågan om huruvida publika metoder och fält ska börja med gemener eller versaler, tycks vara den frågan där Java- och Microsoftvärlden har absolut svårast att komma överens. Själv tar jag seden dit jag kommer, men föredrar Javavarianten (dvs, måsvingen behöver ingen egen rad).

Permalänk: https://www.webforum.nu/p/2167012

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/176525-hakparanteser-för-en-enkel-if-sats
