Оформяне на домашните работи - обобщени правила - сезон 2015


13

Здравейте, колеги.

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

Изготвила съм примерен списък. Ако имате забележки или допълнения, моля отбележете ги, за да ги впиша.

Надявам се заедно да стигнем до консенсус.

Общи правила при изготвяне на домашните работи:

  1. Събирайте всички проекти в един Solution с името на лекцията.Много е затормозяващо да се отварят един по един .sc файловете за всяка задача, да се копира кода и да се поства в друг Solution. Завбъдеще заданията ще стават все повече и след като премина C# 1 колегите вече едва ли ще проявяват такова търпение.
  2. Моля след като качите домашната си, свалете я от сайта, разархивирайте я и проверете дали Ви се отварят безпроблемно Solution-ът и проектите. За тази цел не променяйте имената на вече създадени applications в папката на проекта.
  3. Трийте .obj и .bin файловете, за да не се натоварва излишно сървърът на Академията. Впоследствие ако не го правите, файлът ви ще надвишава допустимия обем, така че е добре да свиквате отсега. App.config файловете също са излишни.
  4. Номерирайте application-ите 01, 02, 03… със същата поредност както по задание. Иначе страшно затормозявате проверяващия домашната ви, който губи излишно време в търсене на всяка задача.
  5. В .cs файла най-отгоре поствайте като коментар условието на задачата с примерите. Това хем ориентира бързо проверяващия каква е целта на програмата Ви, хем може да копира данните от примерите за улеснение.
  6. Добре е да зачиствате излишните неща (на текущия етап) в кода, за да е по-лесно четим. (Библиотеките, които не се използват, например…)
  7. Давайте описателни имена на solution-a, application-ите, класовете и променливите. Трейнърите наблегнаха на това, че е важно отначало да свикваме да спазваме добрите практики.
  8. Би било добре да пишете обяснителни коментари на английски, изясняващи по-сложна идея или основни етапи на решението.
  9. Когато задачата изисква въвеждане на много дълъг вход (повече от 10 числа например), можете да закоментирате готов код за улеснение при проверка.
  10. Форматирайте си кода (Ctrl+K+D).
  11. Отделяйте с по един ред различните логически блокове на кода - вход, етапи на решение, изход...



Отговори



3
Аз като по-скоро като съвети, отколкото правила, бих добавил:

1. като си привършите кода, удряйте по едно Ctrl+K+D за форматиране.
2. Освен това аз лично много лесно проверявам, ако целият код е в един while(true), не се налага за всеки тест да стартирам отново. 
3. В повечето домашни, които съм проверявал досега, имаше много user-friendly принтове(Input int1, Input int2 etc.), които по-скоро ме затрудниха при четенето на кода, отколкото да ми помогнат.
4. хубаво е да се отделят с ред-два различните логически блокове на кода(т.е. м/у вход и заделяне на памет да се остави ред, между изчисления и принтене например), помага за възприемането.

Като цяло с такива неща печелите проверяващите на ваша страна, което пък ви носи повече точки. Пък и колкото по-лесно е оценяването на домашни, толкова повече домашни ще се проверяват и толкова повече ще проверят и вашето :D

от kon.simeonov (5238 точки)


1
Колега, само със 3-та точка не съм съгласна. Това е по-скоро въпрос на ваше лично предпочитание и не може да бъде третирано като best practice (ти си отбелязал, че това са по-скоро съвети, но все пак е според мен е хубаво да се дискутират).
Освен това мисля, че е хубаво да свикваме с мисълта, че някой ден нашия код ще се използва от юзъри.


0

Мерси за допълненията. :)

Форматирането и разстоянието между блоковете ги добавих.

За идеята с while (true) цикъла нека и други колеги изразят мнение и ако са за - ще го добавя... :)


от pepsi_555 (1932 точки)



3
Здравейте бих добавила само, че разбрах от колега доста лесен начин за архивиране на целия solution, с цел да се намали размера на файловете в домашното и съответно да се изтрият obj и bin папките. Трябва да си свалите  vs commands от https://visualstudiogallery.msdn.microsoft.com/c6d1c265-7007-405c-a68b-5606af238ece. След инсталацията, програмата трябва да се рестартира и с десен бутон на solution-a, ZIP Solution и архива е готов за качване. Изпробвано е и работи доста бързо. Също така е доста приятно, ако не се налага да стартираш всеки един проект по отделно. До скоро и аз не знаех как става и бях публикувала тема със запитване как се стартира проект по-лесно. Колегите ме просветлиха, че най-лесно е с промяна на настройките в самия софтуер, а имено десен бутон на solution-a --> properties --> select current selection. Относно другите съвети от колегите съм напълно съгласна. 

от Nayata (3190 точки)


1
А това VS Commands само за архивиране на проектите ли се ползва или инсталира и някакви други неща.?

от M.Yankov (1418 точки)

1
Ами до колкото на мен ми е известно ти дава опция да архивираш solution-a, като имаш опция да изключиш папки и файлове по избор. Тази опция доста улеснява иначе монотонното, ръчно триене на папките от всеки един проект поотделно. Дали с него вървят други разширени команди не съм наясно все още. :)

от Nayata (3190 точки)



1
С две ръце подкрепям идеята да се добавя Squared Infinity plug-in , аз това най-много като че ли съветвах при проверка на домашните както и стъпките за сетване на current project. Проблем , с който се сблъсках бяха всички домашни в .rar формат - там липсваха задачи, имаше .cs файлове вътре в папки на други задачи. Не разбрах дали колегите са предали непълни домашни или някой .rar application им е изиграл лоша шега. С инсталирането на този плъг-ин това ще се избегне. И е супер удобно и бързо!

от Alex_H (1616 точки)


2

Има много лесен начин за преименуване на проект без той да стане недостъпен за solution-a.Просто е нужно когато искате да преименувате проекта си в студиото да копирате точното име и да преименувате папката на проекта по абсолютно същия начин.И тук идва триковата част:

Отворете с текстов едитор(Notepad, Notepad++, etc.) файла на solution-a (.sln), в който се намира проекта за преименуване.Ще ви излезе доста текст и трябва да се ориентирате и да преименувате по желания начин с новото име 2-та подчертани текста в кавичките(по-долу на снимката).Ако единия вече е преименуван значи остава да смените името и на другия.

След тази стъпка записвате промените и стартирате.Всичко трябва да работи и да няма проблеми с разпознаването на преименувани проекти. :)


от baretata (934 точки)


1

Тези напътствия наистина са важни, особено при проверяването на домашните.
Да си призная, че не спазвах това с изтриването на файловете bin & obj. (просто не бях сигурен, че няма да навредят).

      / vote += 1 / 

:D

макар, че не мога да гласувам ( < 50)


от Hri100v (261 точки)


0
Да и аз съм в същото положение. Засега не е имало проблем нищо че не съм ги трил.



1

Тема във форума с повече информация за VS Commands, както и други полезни екстеншъни за VS.

Иначе правилата, които си изредила са супер :) Съгласана съм с всяко едно!


от melnelen (363 точки)


0
За повечето неща съм съгласен.Идеята с копи-пейст на условието в кода на задачата на мен не ми допада,защото когато имате табличка с примери,всичко се обърква и се губи време.Какво толкова има да си отворите страницата с домашното и VS с домашното което проверявате паралелно и само цъкате ту на страницата ,ту на VS.Все пак номерчето 01. във VS отговаря на 1. в страничката с домашните.Така се прави проверка бързо и не се губиш в условието на задачата ,което стои вътре в кода на програмата.И освен това е загуба на време това копиране на условието.Ние сме 500 човека ,не може да има правила наложени от един КОЛЕГА за всички.Мисля че всеки сам преценява да дава бонус или не,но ако задачите на колегите работят правилно трябва да се оценяват с максимална оценка,а когато нещо не ти допада лично на теб,просто не даваш бонус.Така е най-честно.

от Pavel.Aslanov (428 точки)


1

Павел, Относно таблиците в условието - има по-лесен начин с Tab... При натискане на Alt + влачене на мишката надолу по редовете - се пише едновременно или се изместват (+ Tab) няколко реда наведнъж. Така не е трудно да се намести таблицата.

Не виждам как ще се "изгубиш в условието" като е постнато най-горе като коментар преди кода. Още повече, че примерите много бързо ориентират коя е задачата. При разбъркани проекти това много помага. Отделно след време, ако отвориш - всичко е на едно място - ясно и точно.

Никъде не пише нищо за налагане - а за обсъждане и консенсус... Както виждаш коментираме, даваме предложения и изразяваме мнения... Уважавам и твоето мнение, въпреки че не си прочел внимателно темата на дискусията... Все пак благодаря за включването. Надявам се в крайна сметка да стигнем до решение.
Бонусите не съм ги коментирала - ясно е, че всеки сам решава. Лично аз до този момент не съм намалявала ничия оценка, независимо колко разбъркано и затормозяващо е предадено домашното. Ако са решени задачи със звездички или има оригинално решение, даже съм давала бонус и при ужасно оформление и много изгубено време...

Но мисля, че е редно да започнем да уважаваме чуждия труд и време. Живот и здраве на работното място ще сме в екипи и никой колега няма да е очарован от подобен начин на писане... А и не искате ли да бъдете качествени софтуерни инженери?


от pepsi_555 (1932 точки)

1
Когато започнеш да работиш като програмист ще разбереш колко заторморяващо е да се ровиш из кода на друг програмист и той да е неподреден и объркващ. Мисля, че едното подреждане на домашното няма да те забави особено, пък и след това на теб самият ще ти е много по-лесно и удобно да си намираш задачите в случай, че искаш да си припомниш решението на някоя от тях. Също така мисля, че това създава добри навици, които ще ти помогнат в кариерата ти като програмист. Нищо от точките записани по-горе не е задължително, а само препоръчително. Плюс това всички тези неща ако ги изпълниш имаш голям шанс да получиш бонус от проверяващия. Успех :)

от melnelen (363 точки)



0
Според мен, това вече стана с много нападки, всеки има право да си прави домашното както иска и както му е удобно, това че на някого му е по- удобно така не значи, че за всички е така. И това да давате бонуси за форматиран код е просто абсурдно. Да даваме бонус ако кода е форматиран по правилата а не за решаване на задача със звездичка даже няма да коментирам колко повърхностно е това. Като отидете на изпити ми е интересно BgCoder за кое ви дава максимални точки за добро форматиране и коментари или за това дори и и най - трудната задача да работи. Всеки, които си е решил домашното знае много добре условията. И коментари от рода не си си зачистил библиотеките могат да ви донесат Коментара не беше полезен" нищо друго. Не казва че задачите трябва да са наименувани дасдас , дса дад , дас ддасд а, но не прекалявайте със изискванията за форматиране, идеята на домашните е да се упражним да програмираме а не да копираме условия като коментари и да чистим библиотеки, има си специални курсове, които ще ни учат на всички практики, така че не издребнявайте.

от simonspirit (412 точки)


0

Нямаш си на идея колко трудно се изкореняват лоши навици ... :) А и вече изключително рядко "изпадат" проекти, които могат да се изпълнят от един-единствен човек. Навсякъде е важна отборната работа, а за нея изключително важно е разбираемостта на кода. Ако ти не направиш всичко възможно да улесниш колегата си, то той ще заработи по-малко пари опитвайки се да се "закачи" за твоя код. Ти пък ще трябва да влагаш повече усилия, ако кода по който работиш е написан "с краката". Дори и твой собствен код, който не е подреден и документиран след 6 месеца ще е като написан на китайски.

Същото е с домашните - ако вие вложите малко повече старание, то колегите ви които ще го проверяват, ще загубят по-малко време, което ще вложат в усвояване на новите знания, в писане на по-подредени домашни или в проверяване на ВАШЕТО домашно. Нещата са свързани.


от JulianG (5316 точки)

-1

Едно ще ти кажа аз... когато си вложил 4 часа за решаване на задача със две звездички и си си скъсал ... от работа и коментара ти е да си беше зачистил неизползваните библиотеки и никаква похвала за труда, който си положил ще ме разбереш.... никой не казва, че кода трябва да е нечетяем... но да слагаме официални правила, които всички да следват... ако искаш да ми кажеш, че това че не съм си зачистил неизползваните библиотеки ме прави лош програмист а не това какви задачи решавам само по себе си говори за какви "Програмисти" говорим тук.....

Лекторите сами го казаха на лекциите, когато коментара ти е хаплив и се хващаш за  малките и незначителни неща без да оценяваш голямата картинка това може да ти донесе само негативи и аз съм проверявал не много добре структурирани домашни... но хайде хора замислете се, някои от хората тук програмират от един месец и да ги хокате за такива неща просто не Ви отива....Защото има разлика от градивна критика и хапливи коментари и мисля, че много хора тук не разбират разликата.. Всички сме един екип и ако вместо да се караме и да си натриваме носовете с малките неща нека си помагаме... Идеята на такива места не е да се докажем колко велики програмисти сме а да се научим и да създадем контакти...

Успех на всички !


от simonspirit (412 точки)



0

Набързо да вметна относно екстеншъните на VS понеже някой писа за тях : колкото по-малко са те, толкова по-добре.

Поне това е моето мнение от личен опит и от взети съвети на професионалисти - колкото могат да помогнат на начинаещия,толкова и могат да омажат ситуацията и привикнат към вредни навици.

Всеки си преценя все пак.


от IvayloAndonov (1994 точки)


3

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

Благодаря на всички, които си подреждат домашните, така че да улеснят проверяващите! 


от val12mo (256 точки)