BG Development


Страници: (6) « първа ... 2 3 [4] 5 6   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Андроид студио, Мнения за Андроид студио
Gamma Goblin
Публикувано на: 21-05-2018, 15:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



QUOTE (bvbfan @ 21-05-2018, 15:33)
QUOTE (Gamma Goblin @ 21-05-2018, 14:24)
И как си сигурен че си го преименувал във всички файлове ? Ако имаш 2 несвързани класа които имат методи с едно и също име, с той регекс ще ги преебеш и двата защото правиш обикновено текстово търсене игнорирайки смисъла на кода, докато ИДЕто го разбира.

Търсенето ми предлага checkbox-ове там, където не ми е нужно ги махам (ако изобщо има смисъл) и натискам замяна. Пиша за истински текстов редактор като Kate, не за жалки боклуци като Нотепад++.

тоест ти на ръка проверяваш всяко място icon_smile.gif

Иде 1:0 Редактор
PMEmail PosterUsers Website
Top
bvbfan
Публикувано на: 21-05-2018, 15:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4177
Регистриран на: 08.12.13



Клас на файл, това е цял един тик - направо ще си счупя пръста.


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
thrawn
Публикувано на: 21-05-2018, 15:58
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3864
Регистриран на: 17.01.17



Че то в един файл може да има много класове, вложени, анонимни ...
Не виждам смисъл да се спори дали да се ползва ИДЕ или не. Наивно е някак.


PMEmail Poster
Top
Gamma Goblin
Публикувано на: 21-05-2018, 16:04
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



Защо мислиш че е в 1 файл или че е едно извикване ? Ако го има 1000 пъти ? Или в хиляда класа ?

-------------

по-трудни въпроси:

- как с текстовия редактор виждаш йерархията на типа ? - В идето е една клавишна комбинация - Ctrl+H
- как с текстовия редактор виждаш call chain-овете ? - В идето е една клавишна комбинация - Ctrl+Alt+H

Това мнение е било редактирано от Gamma Goblin на 21-05-2018, 16:06
PMEmail PosterUsers Website
Top
relax4o
Публикувано на: 21-05-2018, 16:10
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2850
Регистриран на: 04.04.07



QUOTE (Gamma Goblin @ 21-05-2018, 16:04)
Защо мислиш че е в 1 файл или че е едно извикване ? Ако го има 1000 пъти ? Или в хиляда класа ?

-------------

по-трудни въпроси:

- как с текстовия редактор виждаш йерархията на типа ? - В идето е една клавишна комбинация - Ctrl+H
- как с текстовия редактор виждаш call chain-овете ? - В идето е една клавишна комбинация - Ctrl+Alt+H

Баси якото. Не ги знаех тези клавишни комбинации.
Супер удобно.

Благодаря. icon_lol.gif


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
SuN
Публикувано на: 21-05-2018, 16:18
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 13466
Регистриран на: 27.01.05



QUOTE (Gamma Goblin @ 21-05-2018, 16:04)
- как с текстовия редактор виждаш йерархията на типа ? - В идето е една клавишна комбинация - Ctrl+H
- как с текстовия редактор виждаш call chain-овете ? - В идето е една клавишна комбинация - Ctrl+Alt+H

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

Второто не е толкоз важно. Колко пъти си имал обект, който е дефиниран хиляда страници преди да се ползва метод с прекалено общо име? Греп и минаваш през списъка филтрирайки по файл и тип на обекта дефиниран няколко реда по-нагоре.


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
bvbfan
Публикувано на: 21-05-2018, 16:31
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4177
Регистриран на: 08.12.13



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


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 21-05-2018, 18:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



QUOTE (bvbfan @ 21-05-2018, 16:31)
Да сменям имена на интерфейсни методи води до счупване на бинарната съвместимост, което се прави изключително рядко, когато се пише фреймуорк и дори аз не го правя за приложения дори. Повече от безсмислен фийчър.

Разработката на софтуер по своята същност е един итеративен процес. До сега не съм видял някой да е направил съвършения софтуер от първия опит. Обикновено се прави нещо след което на малки итерации се подобрява парче по парче. Никой не казва че трябва да счупиш публично апи, Въпроснит ерефактринги могат да се приложат към нов код който разработваш в момента.

Наскоро ме накараха да направя един скрип който да упейтва разни глупости в гитхъб. Разбира се аз като един класически програмист който го занимават с глупости го направих по възможно най-бързия и мърляв начин за да ми се разкара от главата. Хубаво, но идва шефа и казва "това е най-хубавия код който съм виждал някога, но може ли да го направиме да работи за това, това и тия още 10 неща" icon_smile.gif А кода всичко е един клас с някакви набити глобални константи, купчина статични методи, абе пълен боклук и а пипнал нещо, а си ги преебал тотално. Аз разбира се казвам му че може и се почва един рефакторинг. И точно тука ИДЕто е "без аналог" icon_smile.gif

Почнах първо да разкарвам статичността на методите, след това тъпите константи ги направих параметри - това става с:
* 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
PMEmail PosterUsers Website
Top
bvbfan
Публикувано на: 21-05-2018, 20:14
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4177
Регистриран на: 08.12.13



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


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
goro
Публикувано на: 21-05-2018, 20:29
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 202
Регистриран на: 31.05.09



QUOTE (Gamma Goblin @ 21-05-2018, 18:18)
...
"това е най-хубавия код който съм виждал някога, но може ли да го направиме да работи за това, това и тия още 10 неща"
...

Нали може да преведа накратко на обикновен български това дето си направил с инжекциона?
icon_lol.gif


Наскоро ме накараха да направя една каруца с която да изВозваме хартиените отпадъци на ИТ отдела ни. Разбира се аз като един класически инжинерин когото занимават с глупости го направих по възможно най-бързия и мърляв начин за да ми се разкара от главата.
Хубаво, но идва шефа и казва "това е най-хубавата каруца дето съм виждал някога, но може ли да я ползваме, да доВозваме аперетива по стаите и още десенина неща"
А каруцата всичко на всичко един кош, четири колела, ръчка за вдигане на коша, кормило и педали за шерпа... А си пипнал нещо, а си я преебал тотално.

Аз разбира се казвам му че може и се почва един рефакторинг. Точно тука инжекциона ми "Лего" е "без аналог" аналогов!
А и общата логика е все Возене!

Разкарвам най напред подвижността на коша, зер ако се вдигне като доВозва - отиде ни аперетива,
След това тъпия кош го направих заменяем в няколко версии: за боклука, аперетива, прането...
Отделих работното място на шерпа който ще върти педалите в собствен клас, да не се разсейва - въртенето на педалите е все въртене и няма нужда от обучение...
Добавих още един шерп да държи геврека след двучасов курс относно правата върху аператива...
...

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

Чудя се дали ще ми разрешат да я пробвам в някое състезание по колоездене?
icon_lol.gif

Това мнение е било редактирано от goro на 21-05-2018, 20:30
PM
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (6) « първа ... 2 3 [4] 5 6  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0