| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
| Страници: (6) « първа ... 2 3 [4] 5 6 ( Първото ново мнение ) | ![]() ![]() ![]() |
| Gamma Goblin |
Публикувано на: 21-05-2018, 15:47
|
||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
тоест ти на ръка проверяваш всяко място Иде 1:0 Редактор |
||||
| bvbfan |
Публикувано на: 21-05-2018, 15:54
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4177 Регистриран на: 08.12.13 |
Клас на файл, това е цял един тик - направо ще си счупя пръста.
--------------------
|
||
| thrawn |
Публикувано на: 21-05-2018, 15:58
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3864 Регистриран на: 17.01.17 |
Че то в един файл може да има много класове, вложени, анонимни ...
Не виждам смисъл да се спори дали да се ползва ИДЕ или не. Наивно е някак. |
| Gamma Goblin |
Публикувано на: 21-05-2018, 16:04
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
Защо мислиш че е в 1 файл или че е едно извикване ? Ако го има 1000 пъти ? Или в хиляда класа ?
------------- по-трудни въпроси: - как с текстовия редактор виждаш йерархията на типа ? - В идето е една клавишна комбинация - Ctrl+H - как с текстовия редактор виждаш call chain-овете ? - В идето е една клавишна комбинация - Ctrl+Alt+H Това мнение е било редактирано от Gamma Goblin на 21-05-2018, 16:06 |
| relax4o |
Публикувано на: 21-05-2018, 16:10
|
||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2850 Регистриран на: 04.04.07 |
Баси якото. Не ги знаех тези клавишни комбинации. Супер удобно. Благодаря. -------------------- Бисери :D
|
||||||
| SuN |
Публикувано на: 21-05-2018, 16:18
|
||
|
Име: Група: Администратор Ранг: Почетен член Мнения: 13466 Регистриран на: 27.01.05 |
Първото защо ти е? Имам такава функция в идето и не знам с какво може да ми е полезна, освен да обърква. По-добре е да мине човек през дефинициите и с очите си да види родителите. Второто не е толкоз важно. Колко пъти си имал обект, който е дефиниран хиляда страници преди да се ползва метод с прекалено общо име? Греп и минаваш през списъка филтрирайки по файл и тип на обекта дефиниран няколко реда по-нагоре. -------------------- Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти. |
||
| bvbfan |
Публикувано на: 21-05-2018, 16:31
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4177 Регистриран на: 08.12.13 |
Да сменям имена на интерфейсни методи води до счупване на бинарната съвместимост, което се прави изключително рядко, когато се пише фреймуорк и дори аз не го правя за приложения дори. Повече от безсмислен фийчър.
--------------------
|
||
| Gamma Goblin |
Публикувано на: 21-05-2018, 18:18
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
Разработката на софтуер по своята същност е един итеративен процес. До сега не съм видял някой да е направил съвършения софтуер от първия опит. Обикновено се прави нещо след което на малки итерации се подобрява парче по парче. Никой не казва че трябва да счупиш публично апи, Въпроснит ерефактринги могат да се приложат към нов код който разработваш в момента. Наскоро ме накараха да направя един скрип който да упейтва разни глупости в гитхъб. Разбира се аз като един класически програмист който го занимават с глупости го направих по възможно най-бързия и мърляв начин за да ми се разкара от главата. Хубаво, но идва шефа и казва "това е най-хубавия код който съм виждал някога, но може ли да го направиме да работи за това, това и тия още 10 неща" Почнах първо да разкарвам статичността на методите, след това тъпите константи ги направих параметри - това става с: * add method parameter - [1] След което обикновено си подреждах параметрите по някакъв удобен и логичен начин чрез * change method signature - [2] След като разкарах "статичността", идентифицирах логиката която беше за въпросния компонент и приложих "extract class"[3] + Move Method [7] за да я отделя в собствен класс. Още малко changeMethodSignature за да оправим методите на класа и вече разчистихме кочината която бяхме сътворили. На следващата стъпка почнах да добавям поддръжка за новите тъпни които поискаха. За целта се спрях на StrategyPattern, и като начало приложих Extract Interface [4] върху вече създадения клас. Обаче методите на този интерфейс бях твърде специфични за конкретнип клас и чрез Rename Mеthod [5] и преименувах да са по-generic за да вършат работа за класовете които щях да създам. След като имах основата почнах със Strategy-то за следващия продукт. След като го направих видях че има много код който си е почти един и същ и с малко рефакторинг го направих така че да е по-generic. Приложих Еxtract Superclass [6] за да създам общ абстрактен родителски клас който да съдържа общата логика. След това с просто изтрих повтарящата се логика от конкретния клас и го направих да наследява абстрактния. В резултат унищожих голямо количество повтаряща се бизнес логика. Още малко Rename Method [5] докато имената на различните методи започнат да ми харесват. С останалите продукти процеса е същия като до тук - създава се нов strategy за съответния продукт от абстрактния клас който ни дава максимално н аготово логикат аот която се нуждаем. Ако се открои групичка със сходна, повтаряща се логика, то тя се изнася в нов абстрактен клас за да се избегне дупликацията. В резултат от едно говно получих приложение с 20ина класа което стана много лесно за разбиране, тестване и бъдещо разширяване. Това което ми отне един следобед с ИДЕто, на текстов редакто ще го правите седмици. [1] https://refactoring.guru/add-parameter [2] https://www.jetbrains.com/help/idea/change-signature.html [3] https://refactoring.guru/extract-class [4] https://refactoring.guru/extract-interface [5] https://refactoring.guru/rename-method [6] https://refactoring.guru/extract-superclass [7] https://refactoring.guru/move-method Това мнение е било редактирано от Gamma Goblin на 21-05-2018, 18:21 |
||
| bvbfan |
Публикувано на: 21-05-2018, 20:14
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4177 Регистриран на: 08.12.13 |
В С++ има доста ограничения по интерфейса, като въпросните 7 неща са позволени, ако пишеш приложение, но ако пишеш фреймуорк - всички причиняват бинарна несъвместимост т.е. всеки, който ползва твоята библиотека ще трябва да прекомпилира, ако иска да ползва новата ѝ версия.
--------------------
|
||
| goro |
Публикувано на: 21-05-2018, 20:29
|
||
|
Име: Група: Потребител Ранг: Активен Мнения: 202 Регистриран на: 31.05.09 |
Нали може да преведа накратко на обикновен български това дето си направил с инжекциона? Наскоро ме накараха да направя една каруца с която да изВозваме хартиените отпадъци на ИТ отдела ни. Разбира се аз като един класически инжинерин когото занимават с глупости го направих по възможно най-бързия и мърляв начин за да ми се разкара от главата. Хубаво, но идва шефа и казва "това е най-хубавата каруца дето съм виждал някога, но може ли да я ползваме, да доВозваме аперетива по стаите и още десенина неща" А каруцата всичко на всичко един кош, четири колела, ръчка за вдигане на коша, кормило и педали за шерпа... А си пипнал нещо, а си я преебал тотално. Аз разбира се казвам му че може и се почва един рефакторинг. Точно тука инжекциона ми "Лего" е "без аналог" аналогов! А и общата логика е все Возене! Разкарвам най напред подвижността на коша, зер ако се вдигне като доВозва - отиде ни аперетива, След това тъпия кош го направих заменяем в няколко версии: за боклука, аперетива, прането... Отделих работното място на шерпа който ще върти педалите в собствен клас, да не се разсейва - въртенето на педалите е все въртене и няма нужда от обучение... Добавих още един шерп да държи геврека след двучасов курс относно правата върху аператива... ... В резултат, от едно говно, получих по голямо... пардон - каруца с 20ина приложения което стана много лесно за разбиране, тестване и бъдещо разширяване... С моя инжекцион за по-малко от ден. Чудя се дали ще ми разрешат да я пробвам в някое състезание по колоездене? Това мнение е било редактирано от goro на 21-05-2018, 20:30 |
||
Страници: (6) « първа ... 2 3 [4] 5 6 |
![]() ![]() ![]() |