Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Units Again [D7, XP]


Страницы:   1 2 3

Steep ©   (2006-10-13 07:16:00) 

Хотел бы узнать оценку моего стиля кодирования
//======================================================
unit FileSizeS;

interface

uses
SysUtils;

function GetSizeTypeS(Path: String): String;
function GetSizeS(Path: String): integer;

implementation

//Получение типа размера файла в строке(1-б, 2-кб, 3-мб, 4-гб, 5-тб :)
function GetSizeTypeS(Path: String): String;
var
sr : TSearchRec;
FSize : real;
i : byte;
begin
FindFirst(Path, faAnyFile, sr); // Получение атрибутов
FSize := sr.Size;
i := 0;
 repeat
 i := i+1;
 Str( FSize:6:2, result);
 FSize := FSize/1024;
 until FSize<1;

 Case i of
   1: result := result + ' байт.';
   2: result := result + ' кбайт';
   3: result := result + ' мбайт';
   4: result := result + ' гбайт';
   5: result := result + ' тбайт';
 end;
end;

//Получение размера файла в байтах
function GetSizeS(Path: String): integer;
var
sr : TSearchRec;
begin
FindFirst(Path, faAnyFile, sr); // Получение атрибутов
result := sr.Size;
end;

end.
//======================================================
Буду рад любой критике

PS. Спасибо за помощь с юнитом!
PPS.
Если удалять в проге ненужные Uses - уменьшит ли это размер проги? Или ненужные функции процедуры вообще не лезут в exe?


nikola232   (2006-10-13 14:05:00) [21]

Не наверное даже кол тебе влепим, Steep.
Ты два раза написал одно и тоже.
function GetSizeTypeS(Path: String): String;
var
sr : TSearchRec;
FSize : real;
i : byte;
begin
FindFirst(Path, faAnyFile, sr); // Получение атрибутов <-здесь
FSize := sr.Size; <-здесь
i := 0;
repeat
i := i+1;
Str( FSize:6:2, result);
FSize := FSize/1024;
until FSize<1;

Case i of
  1: result := result + ' байт.';
  2: result := result + ' кбайт';
  3: result := result + ' мбайт';
  4: result := result + ' гбайт';
  5: result := result + ' тбайт';
end;
end;

//Получение размера файла в байтах
function GetSizeS(Path: String): integer;
var
sr : TSearchRec;
begin
FindFirst(Path, faAnyFile, sr); // Получение атрибутов<-здесь
result := sr.Size;<-здесь
end;


Джо   (2006-10-13 12:42:00) [22]

> Int64;

Потому, что размер файла нужно получать не из Sr.Size: Integer, а составлять из двух значений Sr.FindData.nFileSizeHigh и Sr.FindData.nFileSizeLow. Почему именно так — оставляю "на подумать" :)


> >Строковые параметры с const.

Этот параметр не изменяется в процедуре, указав const, ты
1. Сделаешь код более строгим
2. Позволишь оптимизатору сделать машинный код более оптимальным.


> > где FindClose?
>
> А думал необязательно..

Тут не думать нужно, а справку читать :)


> > Проверять результат, возвращаемый FindFirst
>
> Если я никак не среагирую результат будет 0 (или ошибаюсь)
> , это уж можно обработать в проге

1. Во-первых, зачем выполнять лишний код, если FindFirst НЕ вернул 0?
2. Во-вторых, значение Result будет НЕОПРЕДЕЛЕНО. И проверять его после выхода из функции совершенно бессмысленно — там будет что угодно.
3. Если FindFirst возвращает не 0, он возвращает код ошибки. Ее тут же можно и проанализировать.
4. И, главное: НУЖНО проверять результат функции. Это аксиома. Ее нужно выучить и следовать ей неукоснительно :)


Steep   (2006-10-13 12:32:00) [23]

Спасибо всем большое!


Steep   (2006-10-13 12:30:00) [24]


> где FindClose?

А думал необязательно.. Сории Исправлюсь
----------------------------------------------

> inc(i);

Этого тоже не знал..
----------------------------------------------

> не надо реал, а потом уже сдвиг вправо.

Это как?
----------------------------------------------

> Int64;

>Строковые параметры с const.

Зачем??
----------------------------------------------

> Проверять результат, возвращаемый FindFirst

Если я никак не среагирую результат будет 0 (или ошибаюсь), это уж можно обработать в проге
----------------------------------------------

> Кроме одного оператора case нет никакого форматирования

Не выделяю я в первом бегине код (ненравиться так)
----------------------------------------------

> Наверное, теперь отсутствие стиля - типа, тоже стиль?

Угу! ;)
----------------------------------------------

> 2

мдя.. буду стараться
----------------------------------------------

> Стиль это совокупность приемов оформления и кодирования
> (ИМХО).

Я тоже так считаю
----------------------------------------------

> По собжу. А это тут зачем?
> //======================================================

Это отделения кода ;)
----------------------------------------------

> Это баги

Согласен
----------------------------------------------

> "12,7 мбайт"

У меня возвращает 12,78 кбайт (2 цифры после запятой)
----------------------------------------------

> Приведённый код не приводит к багам - он из содержит.

Обещаю исправить! ;)


Джо   (2006-10-13 12:28:00) [25]

> [29] Fay ©   (13.10.06 12:12)
> 2 Джо ©   (13.10.06 12:05) [28]
> Приведённый код не приводит к багам - он из содержит.

Я придерживаюсь такого определения, в котором "багом" считается ошибка, проявляющяяся при работепрограммы. С этой точки зрения, терминологически неверно говорить, что "баг содержится в коде программы", но верно: "при работе программы проявились баги". Чтобы мое понимание термина было более ясным, сошлюсь на синоним слова "баг" — "глюк". Нельзя сказать, что "в исходном коде — глюк", говорят: "глюк в работепрограммы". А вот эти баги и глюки происходятот ошибок в программе, они же, в свою очередь — от небрежного стиля программирования.
:)


MsGuns   (2006-10-13 12:23:00) [26]

Если под "стилем" подразумевать оформлениекода, то, как верно заметил ЮЮ в [9], стиля нет вообще. Читайте Тексейру и смотрите исходники самого Борланда, где стиль ЕСТЬ. И, ИМХО, вполне профессиональный.

Комментарии ничего не комментируют. А там, где они нужны (например, неясно, почему для получения информации о размере И атрибутах файла надо не только обращаться к двум РАЗНЫМ функциям, но и дважды заставлять винду выполнять одно и то же) отсутствуют.

Если понимать под "стилем" способ реализации алгоритмики, то стиль характеризуется одним словом - стиль  новичка.

Но уже сам факт, что новичка интересует его стиль, вселяет оптимизм ;)


Думкин   (2006-10-13 12:17:00) [27]

> SergP.   (13.10.06 12:04) [27]

Да, про дробные как-то упустил. Каюсь.


Fay   (2006-10-13 12:12:00) [28]

2 Джо ©   (13.10.06 12:05) [28]
Приведённый код не приводитк багам - он из содержит.


Джо   (2006-10-13 12:05:00) [29]

> [26] Fay ©   (13.10.06 11:44)
> 2 Джо ©   (13.10.06 11:37) [24]
> > Вот то, что результаты функций не проверяются и ресурсы
> не освобождаются — это стиль
> Это баги

"Стиль" в том смысле, в каком, например, говорят, что весь стиль жизни у человека такой, что он постоянно в неприятности влипает. Вот так и приведенный код — выдержан в одном отчетливом стиле, непременно приводящем к багам :)


SergP.   (2006-10-13 12:04:00) [30]

> [2] Думкин ©   (13.10.06 08:06)
> Деление на 1024 - shr 10 и не надо real.


Если все в целых - то да...
А вот если нужно чтобы было например "12,7 мбайт" ?


Fay   (2006-10-13 11:44:00) [31]

2 Джо ©   (13.10.06 11:37) [24]
> Вот то, что результаты функций не проверяются и ресурсы не освобождаются — это стиль
Это баги


Kolan   (2006-10-13 11:44:00) [32]


> Вот то, что результаты функций не проверяются и ресурсы
> не освобождаются — это стиль.

По моему это не стиль. Типа "а, у него плохой стиль, он оесурсы не освобождает", так что-ли?

Не освобождение ресурсов это не плохой стиль/тон, это просто ОШИБКА(грубая)...
А стиль - это красота кода, понятность при условие что основная задача выполнена - код работает верно...


Джо   (2006-10-13 11:37:00) [33]

2 Kolan.
Вот то, что результаты функций не проверяются и ресурсы не освобождаются — это стиль. А ты о string с маленькой буквы...


Kolan   (2006-10-13 11:36:00) [34]


> Вот реал на дабл вы поменять захотели - это стиль?

Это я междуу делом, просто прям бросилось в лаза... Фсё остально тока на оформлению.

Стиль это совокупность приемов оформления и кодирования (ИМХО). Я показал одну сторону - оформление..

ЗЫ
По собжу. А это тут зачем?
//======================================================


Думкин   (2006-10-13 11:34:00) [35]

> Kolan ©   (13.10.06 11:07) [16]

А что такое стиль? Вот реал на дабл вы поменять захотели - это стиль?


Kolan   (2006-10-13 11:31:00) [36]


> Inc снимает подобные подозрения.
>

А не доглядел, сор...


Kolan   (2006-10-13 11:28:00) [37]


> Первое попавшееся из PSDK

Я про I, обрати внимание.
 I: Integer;

PS
 Может ветку создать "Первыое попавшиеся :)"


Fay   (2006-10-13 11:26:00) [38]

2 Kolan ©   (13.10.06 11:23) [18]
Welcome to the Platform Software Development Kit (SDK) documentation. This edition provides information about the application programming interfaces (API) supported by Microsoft Windows.

Первое попавшееся из PSDK


Kolan   (2006-10-13 11:23:00) [39]


{ Message dialog }

function GetAveCharSize(Canvas: TCanvas): TPoint;
var
 I: Integer;
 Buffer: array[0..51] of Char;
begin
 for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
 for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
 GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
 Result.X := Result.X div 52;
end;


Первое попавшееся из VCL


Fay   (2006-10-13 11:16:00) [40]

На самом деле, читая I := I + 1, прихожу к выводу, что I  - либо вещественного/вариантного типа, либо I есть свойство. Inc снимает подобные подозрения.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо