1. Java / Говнокод #18384

    +69

    1. 1
    2. 2
    3. 3
    debug("Continue current `round={}`", next);
    /** 3-мя строчками ниже */
    debug("Next round `round={}`", current);

    stasmarkin, 23 Июня 2015

    Комментарии (2)
  2. Куча / Говнокод #18383

    +141

    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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    package eapi
    
    // #include <eggdrop/mod/module.h>
    // #include <eggdrop/main.h>
    // #include <eggdrop/proto.h>
    import (
    	"C"
    	"errors"
    )
    
    const (
    	DP_STDOUT 		= 0x7FF1
    	DP_LOG			= 0x7FF2
    	DP_SERVER  		= 0x7FF3
    	DP_HELP			= 0x7FF4
    	DP_STDERR		= 0x7FF5
    	DP_MODE			= 0x7FF6
    	DP_MODE_NEXT	= 0x7FF7
    	DP_SERVER_NEXT	= 0x7FF8
    	DP_HELP_NEXT	= 0x7FF9
    )
    
    var (
    	binds []struct{
    		flags,match string
    		list *C.tcl_bind_list_t
    	}
    	bind_num int = 0
    )
    
    //...
    
    func Bind(event,flags,match string, proc func(cd *C.ClientData, irp *C.Tcl_Interp, argc C.int, argv *[]C.char)) int,error{
    	tl := C.find_bind_table(C.CString(event))
    	if tl == nil{
    		return -1,errors.New("No such event table : "+ event)
    	}
    	func_name := bname(bind_num)
    	bind_num++
    	var cmd []C.tcl_cmds = {
    		{func_name,proc},
    		{nil,nil}
    	}
    	C.tcl_add_commands(cmd)
    	C.bind_bind_entry(tl, C.CString(flags), C.CString(match), C.CString(func_name))
    	append(binds,{flags,match,tl})
    	return bind_num-1,nil
    }
    
    func Unbind(int num){
    	if binds[num] == nil{
    		return
    	}
    	C.unbind_bind_entry(binds[num].list, C.CString(binds[num].flags), C.CString(binds[num].match), C.CString(bname(num)))
    }

    обертка на Go для Eggdrop API

    unn4m3d, 23 Июня 2015

    Комментарии (1)
  3. Python / Говнокод #18382

    −125

    1. 1
    print "value: %s" % str(e)

    А вдруг tuple?

    3_14dar, 23 Июня 2015

    Комментарии (238)
  4. PHP / Говнокод #18381

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    foreach($_REQUEST as $key => &$val) {
    	$val = htmlspecialchars(stripslashes(trim($val)));
    }
    $officeId = intval($_REQUEST["office-id"]);
    $date = $_REQUEST["date"];
    // [...]

    Эпик вин, однозначно

    creamy, 22 Июня 2015

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    float SGammaUIPanel::OnGetGamma() const
    {
      float DisplayGamma = GEngine->DisplayGamma;
      return GEngine ? DisplayGamma : 2.2f;
    }

    Этот и другие прелести из UE в статье https://www.unrealengine.com/blog/how-pvs-studio-team-improved-unreal-engines-code

    makc3d, 22 Июня 2015

    Комментарии (0)
  6. Куча / Говнокод #18379

    +124

    1. 1
    http://m.habrahabr.ru/post/249637/

    LispGovno, 21 Июня 2015

    Комментарии (13)
  7. Куча / Говнокод #18378

    −24

    1. 1
    2. 2
    3. 3
    Оффтоп #2
    
    Первая часть: http://govnokod.ru/18142

    3_14dar, 21 Июня 2015

    Комментарии (1152)
  8. Java / Говнокод #18377

    +67

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public class Client extends Thread {
        private final static Logger LOG = Logger.getLogger(Client.class);
    
        @Override
        public void run() {
            System.out.println("Client " + name + " comes to restaurant " + restaurant.getName());
            this.cashDesk = chooseCashDesk();
            System.out.println("Client " + getClientName() + " choosed the cashDesk#"+ cashDesk.getNumber());
           //...остальное говно
       }
    }

    Что такое логгер ? ХЗ. Требуют - значит должно быть!

    argamidon, 21 Июня 2015

    Комментарии (1)
  9. C++ / Говнокод #18376

    +145

    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
    29. 29
    30. 30
    31. 31
    #define pb push_back
    #define ll long long#define forit(it, r) for (auto it = r.begin(); it != r.end(); it++)
    #define forn(i, n) for (int i = 0; i < n; ++i)
    #define forn1(i, n) for (int i = 1; i < n; ++i)
    #define FOR(i, m, n) for (int i = m; i < n; ++i)
    #define ROF(i, m, n) for (int i = m; i >= n; --i)
    #define fori(n) for (int i = 0; i < n; ++i)
    #define forj(n) for (int j = 0; j < n; ++j)
    
    
    // ...
    
        string s;
        int k;
        while (i >= base)
            k = i % base,
            s.pb(k > 9 ? k + 'A' - 10 : k + 48),
            i /= base;
        k = i % base;
        s.pb(k > 9 ? k + 'A' - 10 : k + 48);
    
    // ...
    
        fori(s.size())
            if (i < s.size() - 1 && s[i] == '\\' && (s[i + 1] == 'n' || s[i + 1] == -47))
            {
                ret.append("%0A");
                i += 1 + (s[i + 1] == -47);//-47 -- russian t, because has the same place with n (\n == \t_russian)
            }
            else
                ret.append("%" + itoa((s[i] + 256) % 256, 16));

    Олимпиадники... Олимпиадники повсюду...

    Little-Horny, 21 Июня 2015

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

    +142

    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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    #define ADD_TYPE(type, tname, plname) \
    	int Get ## tname ## LocByName(string name) const\
    	{\
    		assert(MyInterface!=null);\
    		auto index=MyInterface.data->get_id_by_name(name);\
    		assert(index==-1 || MyInterface.data->Structure.Declarations[index].Type==ValueType::tname);\
    		return index;\
    	}\
    	ShaderParameters& Set ## tname (int loc, type val)\
    	{\
    		return Set ## plname (loc, &val, 0, 1);\
    	}\
    	ShaderParameters& Set ## tname (string name, type val)\
    	{\
    		return Set ## tname (Get ## tname ## LocByName(name), val);\
    	}\
    	ShaderParameters& Set ## plname (int loc, const type* vals, ushort first, ushort count)\
    	{\
    		if(loc==-1) return *this;\
    		assert(MyInterface!=null);\
    		update_id=++MyInterface.data->num_updates;\
    		values.Set(loc, vals, first, count);\
    		return *this;\
    	}\
    	ShaderParameters& Set ## plname (string name, const type* vals, ushort first, ushort count)\
    	{\
    		return Set ## plname (Get ## tname ## LocByName(name), vals, first, count);\
    	}\
    	type Get ## tname (int loc, ushort i=0) const\
    	{\
    		if(loc==-1) return type();\
    		return values.Get<type>(loc, i);\
    	}\
    	type Get ## tname (string name, ushort i=0) const\
    	{\
    		return Get ## tname (Get ## tname ## LocByName(name), i);\
    	}
    
    	ADD_TYPE(float, Float, Floats);
    	ADD_TYPE(Math::vec2, Vec2, Vecs2);
    	ADD_TYPE(Math::vec3, Vec3, Vecs3);
    	ADD_TYPE(Math::vec4, Vec4, Vecs4);
    	ADD_TYPE(int, Int, Ints);
    	ADD_TYPE(Math::ivec2, IVec2, IVecs2);
    	ADD_TYPE(Math::ivec3, IVec3, IVecs3);
    	ADD_TYPE(Math::ivec4, IVec4, IVecs4);
    	ADD_TYPE(Math::mat3, Mat3, Mats3);
    	ADD_TYPE(Math::mat4, Mat4, Mats4);
    
    #undef ADD_TYPE

    Вот так в моём движке идёт работа с параметрами шейдеров. Макросы делал, чтобы избежать копипаста. Выглядит ужасно, отлаживать неудобно, но зато использовать удобно. Буду думать, как красиво перевести это на шаблоны, чтобы не потерять удобство использования.

    gammaker, 20 Июня 2015

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