Loading...
AleksandarGanchev avatar AleksandarGanchev 25 Точки

Елегантност на код

Здравейте,

При заиграване с първите упражнения от курса "Programming Basics" (C#), ми стана интересно как по-добре, по-елегантно и по-правилно би изглеждал кодът на задачата от упражненията на First Steps in Coding -> упражнение 03. Nums 1...20 

Първоначално използвах този код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i < 21; i++)
            {
                Console.WriteLine(i);
            }
        }
    }
}

След което започнах да се заигравам с кода и различните му решения като пробвах и това решение:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Nums1To20
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 20; i++)
            {
                Console.WriteLine(i);
            }
        }
    }
}

 

После започнах да се питам дали може да се посъкрати някой и друг ред код и пробвах ей така на майтап това:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 20; Console.WriteLine(i++));
        }
    }
}

 

За мое голямо учудване, кодът проработи и judge-системата ми отчете 100/100... 

Та въпросът ми е кое от тези решения е най-правилно, като същевременно е и елегантно и отговаря на днешните качествени практики при кодиране?

Ще съм благодарен на вашите мнения, които ще ми помогнат да се изградя като по-добър бъдещ курсист в академията.

Тагове:
0
Programming Basics with C#
kolioi avatar kolioi 641 Точки
Best Answer

Не знам защо са ти нацвъкали толкова минуси. Тук са малко като коне с капаци и всичко, което е извън учебния материял е тема-табу. Аз ти давам +1 затова, че си експериментирал и си си поиграл малко с кода. Иначе са ти казали вече, че третия вариант е по-труден за разбиране и някой "знайко" ще има да се пули докато го разбере, ако изобщо го разбере.

0
nandonov avatar nandonov 15 Точки

И аз това си мислех, немога да гласувам още но ще го направя когато натрупам точките.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

все тая е,на басик ниво е рано да мислите за такива неща.на PF вече да,от 3те варианта първите 2 са абсолютно идентични. 3тия макар и най-кратък е най-крив за четене.

Ако опиташ да направиш нешо такова при 100+ реда код и ще се застреляш в крака. Има много тънка граница между кратък код и чист код и функционален код. 

Правилните променливи, избягването ан повтарящ се код,изнасянето в методи така се пише правилен код. При вас с толкова кратки нещата че общо взето е без значение. Единствено добрите имена на променливи в момента ти вършат работа.

Това не е умение което може да се изтренира,с времето като пишеш свикваш,за себе си и за други колеги да ги правиш нещата. След 18 месеца нон стоп кодене на различни неща започнах да пиша изчистено, но дори и сега има моменти когато примерно избягвам някакъв linq или тернари оператор и го пиша с foreach или if защото ще ми е по-лесно след месеци,ако ми се наложи да гледма кода или да помагам на колеги да разбера какво се случва. Другия вариант е да се оставят и коментари.

Правилни решения има много,по какъвто и начин да го напишеш ако връщаш това което очаква unit test-a в judge ще мине резултата.

-1
nandonov avatar nandonov 15 Точки

Зравей,

Всеки един от езиците има така наречените наръчници. Някои от езиците са по-стриктни от други (като Python например) и имат цяла библиотека с изисквания относно структурата на кода докато други просто препоръчват определен начин на писане. Можеш да намериш наръчника за C# на този линк:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions

Аз лично предпочитам третия вариянт, но и трите са еднакво добри.

Лек ден!

0
02/09/2018 17:39:35
IlkoSabev avatar IlkoSabev 3 Точки

И 3-те варианта работят по един и същ начин, така че ти си преценяш кой да използваш, в зависимост от това как ти е по-удобно. 

0
Ljubo6 avatar Ljubo6 21 Точки

Първите два варианта са абсолютно правилни , но третият не стои добре въпреки , че работи т.е при много редове кода ще стане трудно четим.Спазвай правилният синтаксис най добре.

0
warglaivee avatar warglaivee 59 Точки

Здравей, с две думи - колкото по-четим и по-прост е кода, по-добре.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.