- 1
pi.UserName = pi.UserName.Trim().TrimStart(',').Trim();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 20
+115
pi.UserName = pi.UserName.Trim().TrimStart(',').Trim();
удаление запятой между именем и фамилией если фамилии нет.
+121
private static long generateUniqueSetID(DataContext context)
{
long id;
do
{
id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0) - DateTime.UtcNow.Ticks;
} while (s_sets.Contains(id));
if (!context.Sets.Where(s => s.SetID == id).Any())
{
s_sets.Add(id);
return id;
}
return generateUniqueSetID(context);
}
это как можно хоть с трудом и догадаться генерация уникального Id для вставки в таблицу. Таблицу чел делал сам и создавать ключик как int его никто не заставлял.
+118
public IProjectController ProjectController
{
[System.Diagnostics.DebuggerNonUserCode]
get
{
return _widgets[0].Widget.ProjectController;
}
[System.Diagnostics.DebuggerNonUserCode]
set
{
foreach (var c in _widgets)
c.Widget.ProjectController = value;
}
}
Коротко но зато как емко. Моя любимая часть это конечно аттрибуты - что бы дебаггер не заходил туда в момент отладки - а вдруг кто увидит
+121
if (OnCreated != null)
{foreach (EventHandler<CreatedEventArgs> handler in OnCreated.GetInvocationList())
{
handler(this, args);
}
}
человек слышал про GetInvocationList но когда его надо применять не понял - зато можно написать 4 строки вместо одной.
В данном случае аналогом будет простой вызов OnCreated().
+113
[Localizable(false)]
internal abstract class ClassAIndex : IDisposable
{
public static ClassAIndex Run()
{
ClassBIndex index = new ClassBIndex();
index.initialize();
return index;
}
// еще методы - абстрактные
}
internal class ClassBIndex : ClassAIndex
{
// тут имплементация
}
я заменил названия у ClassA &B. Надо ли упомянать что другого наследника от ClassA нет и не предвидится?
Ну а localizable атрибут со значением по умолчанию у простого класса (не Component) это уже на сладкое.
+117
widgetPanel.ID = new Guid(String.Format("{0:D32}", widgetInfo.Id));
// в другом месте
var widgetId = Convert.ToInt32(widgetPanel.ID.ToString().Replace('-', '0').TrimStart('0'));
Как узнать что именно надо класть на панель?
Очень просто - брать ее id типа Guid, а искать в списке классов с id типа int
Разумеется, никто не запрещал сделать что бы оба были guid, но это же совершенно не интересно.
+111
try
{
Int16 y = 0, m = 0, d = 0, hh = 0, mm = 0, ss = 0, ms = 0, zn = 0;
if (Value.IndexOf("T") > 0)
{
Int16.TryParse(Value.Substring(0, 4), out y);
Int16.TryParse(Value.Substring(4, 2), out m);
Int16.TryParse(Value.Substring(6, 2), out d);
Int16.TryParse(Value.Substring(9, 2), out hh);
Int16.TryParse(Value.Substring(11, 2), out mm);
Int16.TryParse(Value.Substring(13, 2), out ss);
Int16.TryParse(Value.Substring(16, 2), out ms);
Int16.TryParse(Value.Substring(18, 3), out zn);
dt = new DateTime(y, m, d, hh, mm, ss, ms, DateTimeKind.Utc);
}
if (Value.IndexOf("T") == 0)
{
Int16.TryParse(Value.Substring(0, 2), out hh);
Int16.TryParse(Value.Substring(2, 2), out mm);
Int16.TryParse(Value.Substring(4, 2), out ss);
Int16.TryParse(Value.Substring(7, 2), out ms);
dt = dt.AddHours(hh).AddMinutes(mm).AddSeconds(ss).AddMilliseconds(ms);
}
dt.AddHours(-zn);
catch (Exception ex)
{
Console.Write(this.Value + "\r\n" + ex.ToString());
}
return dt;
Разбор модифицированного iso 8601 формата даты и времени (без "-").
не учитавается наличие/отсуствие даты или времени, длинная тайм зона, то что если нет T то это не время а дата. Естественно все обернуто в try/catch что бы никто не догадался.
Так сказать особой утонченности придает строка dt.AddHours(-zn);
(сколько уйдет у кого секунд что бы понять что с ней не так?)
+112
public static string ConvertBase64ToString(string b64)
{
string Value = b64;
if (Value != null && Value.Length > 0)
{
System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
System.Text.Decoder decoder = encoder.GetDecoder();
byte[] bytes = Convert.FromBase64String(Value);
int charCount = decoder.GetCharCount(bytes, 0, bytes.Length);
char[] chars = new char[charCount];
decoder.GetChars(bytes, 0, bytes.Length, chars, 0);
string results = new String(chars);
return results;
}
return string.Empty;
}
не говоря уже про локальную переменную Value, весь блок заменяется на
return System.Text.ASCIIEncoding.ASCII.GetStrin g(Convert.FromBase64String(Value));
+139.4
var viewsId = new List<int>(views.Select(v => v.ViewId).Distinct());
var sviewsId = "," + String.Join(",", viewsId.Select(i => i.ToString()).ToArray()) + ",";
_total = (from d in context.TableA
join uvd in context.TableB on d.DocID equals uvd.DocID
join uv in context.TableC on uvd.ID equals uv.ID
where sviewsId.IndexOf("," + uv.ID.ToString() + ",") > 0
select d.DocID)
.Distinct ()
.Count ();
Оригинальный способ обойти ограничение на 2100 параметров. А как быстро оно будет работать!
views, разумеется, из того же контекста.
+947.7
foreach (string id in sourceIDs.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
sourceId = Convert.ToInt32(id);
break;
}
Как взять первую цифру в строке - конечно без цикла тут никак