BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Какво се е случило с моя код?
kapitancho
Публикувано на: 14-11-2017, 15:20
Quote Post



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

Мнения: 1034
Регистриран на: 26.02.05



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

CODE

...
      fillCombo : function (combo, data, leaveFirst, useselceted) {
            var selctedsplit = false;
            var selectedid = false;
            if (typeof useselceted=='boolean') {
                  selectedid = (combo.value.length>0 && useselceted) ? combo.value : false;      
            } else if (typeof useselceted=='string') {
                  selectedid = (useselceted.length>0) ? useselceted : false;
            } else if (typeof useselceted=='number') {
                  selectedid = (isNaN(useselceted)) ? false : useselceted;
            } else if (typeof useselceted=='object') {
                  selctedsplit = (useselceted.value && useselceted.split) ? useselceted.split : false;
                  selectedid   = (useselceted.value) ? useselceted.value : false;                  
            } else {
                  selectedid = false;
            }
            combo.options.length = leaveFirst ? 1 : 0;
            
            var man = function (id, text) {
                  selected = false;
                  if (selectedid) {
                        if (selctedsplit) {
                              id_split = String (id).split(selctedsplit);
                              if (id_split.length>1) {
                                    for (i=0;i<id_split.length;i++) {
                                          if (id_split[i]==selectedid) {
                                                selected = true;
                                          }
                                    }
                              } else {
                                    if (id==selectedid) {
                                          selected = true;
                                    }
                              }
                        }
                        else if (id==selectedid) {
                              selected = true;
                        }
                  }
                  if (selected) {
                        combo.options.add (new Option (text, id, true, true));
                  }
                  else {
                        combo.options.add (new Option (text, id));                        
                  }                  
            };
            
            if (data instanceof Array) {
                  for (var k = 0; k < data.length; k++) {
                        man (data[k].key, data[k].value);
                  }
            } else {
                  for (var id in data) {
                        man (id, data[id]);
                  }
            }
      },
...


--------------------
®...¢↓"←—¬ªº±£™×÷⁄...©
PMEmail Poster
Top
hristonev
Публикувано на: 14-11-2017, 15:42
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 32
Регистриран на: 19.09.17



С малко повече въображение "useselceted" може да ходи на пазар, мие чиниите, забърсва праха и за капак да покоди като свърши другите, за които е зачислена icon_lol.gif
PMEmail Poster
Top
alphasoftwarebg
Публикувано на: 14-11-2017, 15:52
Quote Post



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

Мнения: 472
Регистриран на: 23.12.12



На пръв поглед е добавена частта, която ползва "useselceted".


--------------------
zzz.bg - NoSQL ZZZ Base...
PMEmail PosterUsers Website
Top
FidelDahan
Публикувано на: 14-11-2017, 17:11
Quote Post



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

Мнения: 2207
Регистриран на: 12.06.08



@kapitancho, Че кода е раздут, раздут е. Че някой го е омазал, омазал го е.

- Седни изчисти кода - така ще подобриш кода.

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

- И накрая върни се в себе си и помисли върху нагласата си. Заглавието на темата я отразява.

Няма такова нещо мой код, твой код. Има добре написан код и зле написан код. Ако някой е омазал, е омазал. Ако е омазал твоя код, сега този код е и негов. Всъщност кода е на всички. Въпроса е, как в бъдеще да пишем по-добър код въпреки, че кода е на всички и как в бъдеще да предотвратим кода да се омазва.
PMEmail Poster
Top
kapitancho
Публикувано на: 14-11-2017, 17:31
Quote Post



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

Мнения: 1034
Регистриран на: 26.02.05



Да, това е верният отговор. Оригинално функцията беше под 10 реда.

Мултифункционалността на useselected е наистина впечатляваща. За да разбера как (може да) работи, няколко минути се взирах в кода icon_smile.gif

Много ми хареса изборът на имена на променливите:
selectedid - тук е що-годе ок - въпреки че се очаква selectedId
useselceted - към липсващият camelCase, добавям, че буквите c и e са разменени
selctedsplit - тук липсва и едно e между l и c.

@FidelDahan,
Съгласен съм за "мой" и "твой" код. Доста идеализирано понятие е, което бързо бързо се размива.
Иначе, не ми е много удобно, предвид позицията, която заема човекът, още повече че има солиден стаж като програмист (да, знам че не му личи по кода)
А подобряването на кода може и да се случи, стига да се уверя, че нито едно от 40-те места, където се ползва тази функция, не разчита на тези "богати" възможности на четвъртия аргумент.


--------------------
®...¢↓"←—¬ªº±£™×÷⁄...©
PMEmail Poster
Top
SuN
Публикувано на: 14-11-2017, 17:33
Quote Post


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

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



QUOTE
Ако е омазал твоя код, сега този код е и негов. Всъщност кода е на всички.


А, да бе! На всички? Х пише бъгав код, но всички са виновни за това? Х пише лошо и раздуто кода, но всички са виновни за това?

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

П.п.

Капитанчо, създателите на карти правят умишлени грешки за да хващат тия, които им копират труда. Човека сигурно е заложил капан за тия, които му променят кода и като го счупят - да знае кой да обвини. icon_smile.gif

Това мнение е било редактирано от SuN на 14-11-2017, 17:35


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
FidelDahan
Публикувано на: 14-11-2017, 17:53
Quote Post



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

Мнения: 2207
Регистриран на: 12.06.08



Когато имаш collective ownership, това не означава, че всички носят отговорност за дефекти допуснати от отделен индивид. Означава просто, че всеки може да оправи този бъг или да подобри кода, без да са необходими специални разрешителни и молби.
PMEmail Poster
Top
SuN
Публикувано на: 14-11-2017, 18:00
Quote Post


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

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



Това за колко "сеньор +10 години" програмисти е удачно?

Макар да ми се струва, че те ще се върнат на "стронг оунършип" просто защото имат опит с бутането по чужд код. icon_smile.gif

П.п.

Колко от вас оправят бъгове в проекти на други хора? Информирате ли ги за това?

Това мнение е било редактирано от SuN на 14-11-2017, 18:02


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
FidelDahan
Публикувано на: 14-11-2017, 18:42
Quote Post



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

Мнения: 2207
Регистриран на: 12.06.08



Всеки може да оправя бъговете на всеки, стига да е запознат с тематиката. Информира ме се и всеки знае, че всеки допуска бъгове и грешки понякога. Ако колегата го няма продукта трябва да се развива, няма чакане. Ако колегата е тук, но пък е зает с нещо друго, той помага за анализа на проблема, а решението обикновено не е трудно след като анализа е добре направен. Затова не е big deal да фикснеш нещо на друг, или на тебе да ти фикснат, даже има здравословно злорадство :-)

ЕДИТ: всъщтност сега като чета дефинициите ние практикуваме точно Weak code ownership

Това мнение е било редактирано от FidelDahan на 14-11-2017, 18:56
PMEmail Poster
Top
hristonev
Публикувано на: 14-11-2017, 19:39
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 32
Регистриран на: 19.09.17



Абе това с оправянето на акито на други е възможно ама по-лесно е да си го напишеш наново (по-малки неща). Има съм случаи, Индиецо беше натворил 5к+ реда файл, редактора ми забиваше, де каквато логика имаше по проекта беше малко или много замесена в тоя файл. Е пренаписах го с DEL, и резултата беше 3-400 реда... Не знам на някой за бройка ред ли им плащат.
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


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