Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
public DataTable ConvertToString(Array values, int col_length, int row_length, int counter) {
DataTable dt = new DataTable();
string[] theArray = new string[col_length];
if (row_length < counter)
counter = row_length;
for (int j = 1; j <= counter; j++) {
for (int i = 1; i <= col_length; i++) {
if (j == 1) {
try {
dt.Columns.Add(values.GetValue(j, i).ToString().Replace('.', '_'));
} catch (NullReferenceException nre) {
dt.Columns.Add("F" + i);
}
} else if (values.GetValue(j, i) == null)
theArray[i - 1] = "";
else
theArray[i - 1] = (string)values.GetValue(j, i).ToString();
}
if (j != 1)
dt.LoadDataRow(theArray, true);
}
return dt;
}
шедеврально, чтобы понять, есть ли значение в первой строке нужно словить NullReferenceException, а дальше можно проверить на != null
и так же (string)values.GetValue(j, i).ToString();
Глядя на поломанную семантику, можно невозбранно представлять жизненный цикл и рефакторинг метода.
> theArray
А есть какой-то нейминг конвеншн, чтоб регламентировал что-то вроде такого:
aMyShittyClass - описание класса
theMyShittyClass - реализация класса
?
просто автор этого ГК просто совершенно не умеет работать со типами данных. когда он занимался онанизмом разработкой веб интерфейса, он использовал вебслужбу. короче получилось так, что сериализатор в JSON, который там использовали все остальные ему не понравился, он его сломал к херам так, что он совершенно не понимал чисел, только строки. ну и как-то получилось так, что после этого он один занимался проектом, и не обламывался в принципе-то )) через какое-то время, он ушел в отпуск, и в его отсутствие меня посадили подкрутить там рюши всякие. у меня волосы на жопе зашевелились, когда я увидел, что у него все в строках... даты, числа, xml.
if (folderBrowserDialog1.ShowDialog().ToString() == "OK") {
textBox1.Text = folderBrowserDialog1.SelectedPath.ToString();
}
ShowDialog() возвращает enum, а SelectedPath и так уже string.
человек с красным дипломом закончил МГУ, получил MCP, и сейчас работает руководителем группы разработки.
public DataTable GetRecords2(_Workbook wbook, string wsname)
{
var range = wbook.Worksheets[wsname].UsedRange.Rows;
return ConvertToDataTable(range.Cells.Value, range.Columns.Count, range.Rows.Count);
}
public DataTable ConvertToDataTable(Array values, int colLength, int rowLength)
{
var dt = new DataTable();
var theArray = new string[colLength];
for (var i = 1; i <= colLength; i++)
dt.Columns.Add((values.GetValue(1, i) == null)
? "F" + i
: values.GetValue(1, i).ToString().Replace('.', '_'));
for (var j = 2; j <= rowLength; j++)
{
for (var i = 1; i <= colLength; i++)
theArray[i - 1] = (string)values.GetValue(j, i);
dt.LoadDataRow(theArray, true);
}
return dt;
}
Немного рефакторинга (суть метода не смотрел, только вид поменял)
public DataTable ConvertToDataTable(Array values, int colLength, int rowLength, int counter)
{
var dt = new DataTable();
var theArray = new string[colLength];
if (rowLength < counter) counter = rowLength;
for (var i = 1; i <= colLength; i++)
dt.Columns.Add((values.GetValue(1, i) == null)
? "F" + i
: values.GetValue(1, i).ToString().Replace('.', '_'));
for (var j = 2; j <= counter; j++)
{
for (var i = 1; i <= colLength; i++)
theArray[i - 1] = values.GetValue(j, i).ToString();
dt.LoadDataRow(theArray, true);
}
return dt;
}
> theArray
А есть какой-то нейминг конвеншн, чтоб регламентировал что-то вроде такого:
aMyShittyClass - описание класса
theMyShittyClass - реализация класса
?
не, ну а вдруг?
theArray[i - 1] = "";
else
theArray[i - 1] = (string) values.GetValue(j, i).ToString();
Вообще то ToString() от null вернет пустую строку, условие лишнее
дает ошибку компиляции =)
Use of unassigned local variable 's'
этот массив был получен в этом методе
просто автор этого ГК просто совершенно не умеет работать со типами данных. когда он занимался онанизмом разработкой веб интерфейса, он использовал вебслужбу. короче получилось так, что сериализатор в JSON, который там использовали все остальные ему не понравился, он его сломал к херам так, что он совершенно не понимал чисел, только строки. ну и как-то получилось так, что после этого он один занимался проектом, и не обламывался в принципе-то )) через какое-то время, он ушел в отпуск, и в его отсутствие меня посадили подкрутить там рюши всякие. у меня волосы на жопе зашевелились, когда я увидел, что у него все в строках... даты, числа, xml.
ShowDialog() возвращает enum, а SelectedPath и так уже string.
человек с красным дипломом закончил МГУ, получил MCP, и сейчас работает руководителем группы разработки.
универ дает по минимуму знаний. самообразованием нужно заниматься
{
object a = null;
Console.WriteLine((string)a+"hh");
Console.Read();
}
просто объекты в этом массиве приведены к object, но не исключено, что может быть и string, который ссылается на null
А большенство обьектов не поддерживают (string)obj увы . Нет общности