1. JavaScript / Говнокод #12849

    +163

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var z=fggh.getElementsByTagName("*");
    for(iii=0; iii<z.length; z++)
    if(z[iii].parentNode==fggh){
    //z[iii] - непосредственный потомок fggh, и мы с ним что-то делаем!
    …
    }

    Раз народ решил, что я незаслуженно обижаю юниора, то вот вам ещё более шокирующий пример подобного кода от программиста, с которым мы вместе работали несколько лет назад в одной московской фирме. Тут, к сожалению, воспроизвожу по памяти, но очень близко к оригиналу.

    torbasow, 04 Апреля 2013

    Комментарии (7)
  2. PHP / Говнокод #12848

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    if(@$_POST['submit']) {
            
    	$title = "title";
    	$string = "";
    	$equal = "=";
    	$amper = "&";
            $to = '[email protected]';
            $from='[email protected]';
    
    	foreach($_POST as $key => $value) {
    		foreach($value as $v) {
    			$string=$string.$key.$equal.$v.$amper;
    		}
    	}
    
            mail($to, $title, $string, 'From:'.$from);
    }

    clauclauclau, 04 Апреля 2013

    Комментарии (6)
  3. JavaScript / Говнокод #12847

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    if (e.button in [-1, -1, -1]) { // попробуйте теперь сообразите, почему true
    				e.preventDefault();
    				var rel = this.rel.split(';'),
    					fn;
    				switch (e.button) {
    				case 0:
    					fn = 'attr';
    					break;
    				case 1:
    				case 2:
    					fn = 'removeAttr';
    					break;
    				default:
    					return false;
    				}
    				$('td.mod[rel="' + rel[0] + '"] input[rel="' + rel[1] + '"]').each(function () {
    					if (fn === 'removeAttr' && $(this).attr('rel') === 'view') { // Я маразматик
    						var parts = /(chk\[\d+\]\[\d+\])\[view\]/.exec(this.id),
    							p = ['add', 'edit', 'del'],
    							i;
    						for (i in p) {
    							$('#' + parts[1].replace(/[[\]]/g, "\\$&") + '\\[' + p[i] + '\\]')[fn]('checked');
    						}
    					}
    					$(this)[fn]('checked', 'checked');
    				});
    				return false;
    			}

    ГК, не?
    первая строка вот... текущий проект, сижу с ним на данный момент. Почему захотелось так сделать, объяснить не могу. Но работает, ведь

    Serabas, 04 Апреля 2013

    Комментарии (8)
  4. C++ / Говнокод #12846

    +16

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for ( std::size_t i = startIndex; i < indices.size(); ++i )
    {
        std::size_t idx = i % indices.size();
        // Some code that uses idx ...
    }

    Обогреваем помещение.

    Cpp, 03 Апреля 2013

    Комментарии (9)
  5. JavaScript / Говнокод #12845

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    var detailsTable = document.getElementById("detailsTable").tBodies[0];
    var childs = [], j=0;
    for (var i = 0; i < detailsTable.childNodes.length; i++)
    	if  (detailsTable.childNodes[i].nodeType == 1){
    		childs[j++] = detailsTable.childNodes[i];
    	}
    childs[0].childNodes[1].innerHTML = ''

    Наткнулся в нашем проекте. Так юниор получал доступ к ячейкам таблицы. Видно, он не знал про коллекции rows и cells.

    torbasow, 03 Апреля 2013

    Комментарии (12)
  6. C++ / Говнокод #12844

    +20

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    #include <iostream>
    #include <string>
    #include <utility>
    #include <tuple>
    #include <array>
    #include <vector>
    #include <algorithm>
    #include <iterator>
    
    int main() {
       const std::array< const std::pair<const int, const std::string>, 3 > a {{{1,"2"}, {3,"4"}, {5,"6"}}};   
       std::vector<std::string> r;
       std::transform(std::begin(a), std::end(a), std::back_inserter(r), static_cast<std::string const& (*)(const std::tuple<const int, const std::string>&)>(std::get<1, const int, const std::string>));
       std::copy(std::begin(r), std::end(r), std::ostream_iterator<const std::string>(std::cout, " "));
       return 0;
    }

    У нас новичку на собеседовании предложили продемонстрировать работу (без конкретики) с кортежами и итераторами.
    Что вы можете сказать про его умения, характер и состояние психики? А вы бы этого взяли на работу?
    http://liveworkspace.org/code/2DW59a$0

    LispGovno, 03 Апреля 2013

    Комментарии (109)
  7. C++ / Говнокод #12843

    +16

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for (;!pool.isEmpty() || started;) {
                for (;!pool.isEmpty();) {
                    GramophoneEvent event = pool.poll();
                    event.apply(handler);
                }

    while для слабаков!

    ArtFeel, 02 Апреля 2013

    Комментарии (31)
  8. ActionScript / Говнокод #12842

    −90

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    /**
     * better,faster OLD SCHOOL HACKS ^^
     * **/
    public static function compareObject(obj1:Object, obj2:Object):Boolean {
    	var buffer1:ByteArray = new ByteArray();
    	buffer1.writeObject(obj1);
    	var buffer2:ByteArray = new ByteArray();
    	buffer2.writeObject(obj2);
    
    	// compare the lengths
    	var size:uint = buffer1.length;
    	if (buffer1.length == buffer2.length) {
    		buffer1.position = 0;
    		buffer2.position = 0;
    
    		// then the bits
    		while (buffer1.position < size) {
    			var v1:int = buffer1.readByte();
    			if (v1 != buffer2.readByte()) {
    				return false;
    			}
    		}
    		return true;
    	}
    	return false;
    }

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

    kostoprav, 02 Апреля 2013

    Комментарии (58)
  9. PHP / Говнокод #12841

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    $query = "INSERT INTO analiz SET
        obegin = $duss,
        vbegin = $leas,
        lbegin = $duls,
        opodk  = $dusc,
        vpodk  = $leac,
        lpodk  = $dulc,
        oend   = $duse,
        vend   = $leae,
        lend   = $dule,
        ozatr  = $dusZ,
        vzatr  = $leaZ,
        lzatr  = $dulZ,
        ooplat = $dusU,
        voplat = $leaU,
        loplat = $dulU,
        opay   = $dusN,
        vpay   = $leaN,
        lpay   = $dulN,
        date   = '$dnow'";

    cOde = $pzDc

    rsvasilyev, 02 Апреля 2013

    Комментарии (23)
  10. C# / Говнокод #12840

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    abstract class A { }
    
    abstract class B
    {
         void CallValidate(A objA)
         {
              MethodInfo info = base.GetType().GetMethod("Validate", new[] { objA.GetType() });
    
              if (info == null)
              {
                   throw new ApplicationException("The method 'Validate' with parameter type '" + objA.GetType() + "' is not implemented.");
              }
    
              info.Invoke(this, new object[] { objA });
         }
    }

    Метод CallValidate базового класса проверяет наличие метода "Validate" с нужной сигнатурой в своих дочерних классах и вызывает его, если таковой есть, иначе - кидает исключение.

    Guid, 02 Апреля 2013

    Комментарии (19)