Моя первая полезная программа под .NET
От: _Winnie Россия C++.freerun
Дата: 16.07.05 19:31
Оценка:
Спасибо всем, кто помогал мне на форуме

Вот, моя первая программа под .NET. Знаю, много кривостей, но делалась под определенную задачу — расчистить место на диске. Таки вычислил и стер 30 гигабайт
Сделал программу для удобной чистки диска — легко посмотреть, что сколько места занимает. Введитие в верхнем поле папку(например, "C:\"), которую надо чистить и нажмите кнопку со стрелкой. Далее выбирайте файлы/папки/расширения и удаляйте их.

Для работы требуется .NET framework 1.1. Если у вас установлен Visual Stuido .NET 2003, значит framework тоже установлен.

Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Моя первая полезная программа под .NET
От: _FRED_ Черногория
Дата: 16.07.05 19:37
Оценка: +1
Здравствуйте, _Winnie, Вы писали:

_W>Вот, моя первая программа под .NET.

..........

Где её можно взять?
Help will always be given at Hogwarts to those who ask for it.
Re: Моя первая полезная программа под .NET
От: Kirill Nikolaev Россия  
Дата: 16.07.05 19:49
Оценка:
Здравствуйте, _Winnie, Вы писали:

Все это хорошо, только где она?

А я для этих целей пользуюсь Scanner. Тоже, кстати, с исходниками, только на Дельфи.
Re[2]: Моя первая полезная программа под .NET
От: _Winnie Россия C++.freerun
Дата: 16.07.05 20:03
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, _Winnie, Вы писали:


_W>>Вот, моя первая программа под .NET.

_FR>..........

_FR>Где её можно взять?


Черт, ссылку забыл. Вот — http://dobrokot.nm.ru/DiskCleanerBy_Winnie.rar
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: Моя первая полезная программа под .NET
От: adontz Грузия http://adontz.wordpress.com/
Дата: 16.07.05 20:22
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Черт, ссылку забыл. Вот — http://dobrokot.nm.ru/DiskCleanerBy_Winnie.rar


Идея, неплохая — интерфейс убогий. В целом неплохо, особенно для первой программы.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Моя первая полезная программа под .NET
От: Andre Украина  
Дата: 16.07.05 22:02
Оценка: 49 (5) +1
_W>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)

Полезные и не очень советы, вопросы, предложения:

1) 1 класс == 1 файл. Не стейсняйся

2) Вот от этого отучайся. Я за такое знаешь что делаю когда на review нахожу? Лучше не знать Поэтому в последнее время и не нахожу. Проблемы нужно не замазывать а решать:
                }
                catch (Exception)
                {
                }


3) ИМХО lastFolderViewClickedPoint лишняя конструкция:
        ListViewItem folderViewItem = 
            folderView.GetItemAt(lastFolderViewClickedPoint.X, lastFolderViewClickedPoint.Y);

Вполне заменяется таким:
            if (folderView.SelectedItems.Count == 0)
                return;
            ListViewItem folderViewItem = folderView.SelectedItems[0];


4) Неплохо бы добавить в строку поиска запуск поиска по Enter

5) Маленький экперимент. Запускаем сканирование чего то типа c:\windows и закрываем приложение. Потом любуемся в таскменеджере как приложение продолжает работать.
Неплохо бы добавить выделенное
            buildFilesDataBaseThread = new System.Threading.Thread(
                new System.Threading.ThreadStart(BuildFilesDataBaseThreadProc));
            buildFilesDataBaseThread.Start();
            buildFilesDataBaseThread.IsBackground = true;
            this.CheckBuildThreadTimer.Enabled = true;


6) Прежде чем передавать сюда что попало:
        DirectoryInfo dirInfo = new DirectoryInfo(root_path);

неплохо бы сделать что то типа:
        if(!Directory.Exists(root_path))
        {
            // сообщить пользователю что он пытается обмануть програмку :)
            return;
        }


7) Не совсем понятно что происходит по двойному нажатию на панели с ресширениями. Мы куда то навигируемся, но логики честно говоря не понял
Может добавить снизу еще список, где при выборе чего то в списке с расширениями будут отображатся полные пути к файлам с таким расширением?

8) При выполнении каких либо деструктивных действий, как то удаление, рекомендуется спросить пользователя находится ли он в здравом уме и при памяти


В общем пока думаю хватит. Хочу отметить что в целом действительно неплохо как для начала
Спасибо за внимание.
... << RSDN@Home 1.1.4 beta 7 rev. 467>> :: silent
Я бы изменил мир — но Бог не даёт исходников...
Re: Моя первая полезная программа под .NET
От: Аноним  
Дата: 17.07.05 08:59
Оценка:
Есче немного критики :
1) Имя класса FileInfo уже существует в намеспасе System.IO.
2) Просто из уважения к пользоватедю я бы добавил потдержку тем, кнопочку броуз. Выровнял бы текст бокс. Ну вобщемто навел бы порядок. И гланое поискал бы иконки не с 256 цветами .
3) Из уважения к программистам вынес бы все классы в отдельные файлы.

Кстати в своей первой проге я незнал что существует модифер volatile. И не использовал абстрактные классы.
Наилучшие!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Моя первая полезная программа под .NET
От: _Winnie Россия C++.freerun
Дата: 17.07.05 11:43
Оценка:
Здравствуйте, Andre, Вы писали:

_W>>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)


A>Полезные и не очень советы, вопросы, предложения:

Спасибо!

A>1) 1 класс == 1 файл. Не стейсняйся

Согласен.

A>2) Вот от этого отучайся. Я за такое знаешь что делаю когда на review нахожу? Лучше не знать Поэтому в последнее время и не нахожу. Проблемы нужно не замазывать а решать:

A>
A>                }
A>                catch (Exception)
A>                {
A>                }
A>


Ну, единственное разумное что тут можно сделать — это сообщить в лог. Тоже согласен.

A>3) ИМХО lastFolderViewClickedPoint лишняя конструкция:

A>
A>        ListViewItem folderViewItem = 
A>            folderView.GetItemAt(lastFolderViewClickedPoint.X, lastFolderViewClickedPoint.Y);
A>

A>Вполне заменяется таким:
A>
A>            if (folderView.SelectedItems.Count == 0)
A>                return;
A>            ListViewItem folderViewItem = folderView.SelectedItems[0];
A>


Эээ... Не понял. Как мне в двойном щелчке определить, по какому элементу кликнули? Или гарантируется, что он окажется выделенным?

A>4) Неплохо бы добавить в строку поиска запуск поиска по Enter


Угу.

A>5) Маленький экперимент. Запускаем сканирование чего то типа c:\windows и закрываем приложение. Потом любуемся в таскменеджере как приложение продолжает работать.

A>Неплохо бы добавить выделенное
A>
A>            buildFilesDataBaseThread = new System.Threading.Thread(
A>                new System.Threading.ThreadStart(BuildFilesDataBaseThreadProc));
A>            buildFilesDataBaseThread.Start();
A>            buildFilesDataBaseThread.IsBackground = true;
A>            this.CheckBuildThreadTimer.Enabled = true;
A>


Хорошо, посмотрю в MSDN что это значит
                filesDataBase.stopWork = true;
                buildFilesDataBaseThread.Join();

в обработичке OnClosed


A>6) Прежде чем передавать сюда что попало:

A>
A>        DirectoryInfo dirInfo = new DirectoryInfo(root_path);
A>

A>неплохо бы сделать что то типа:
A>
A>        if(!Directory.Exists(root_path))
A>        {
A>            // сообщить пользователю что он пытается обмануть програмку :)
A>            return;
A>        }
A>


Ага.

A>7) Не совсем понятно что происходит по двойному нажатию на панели с ресширениями. Мы куда то навигируемся, но логики честно говоря не понял


Я тоже. Вроде, я обрабатываю сообщение о двойном клике только от левой панели, а почему щелчок приходит и когда он сделан по второй панели, не понимаю.
A>Может добавить снизу еще список, где при выборе чего то в списке с расширениями будут отображатся полные пути к файлам с таким расширением?
Ыыы! Их может быть тысячи.

A>8) При выполнении каких либо деструктивных действий, как то удаление, рекомендуется спросить пользователя находится ли он в здравом уме и при памяти


Я тоже об этом думал... Мне показалось это неудобным. Как бы сделать одновременно и удобным, и безопасным? У меня была такая идея — не стирать, а только добавлять в какой-то список для удаления. А потом уже целиком стирать все списке. Но это было уже слишком сложно, и возможно слишком непонятно для пользователя

A>В общем пока думаю хватит. Хочу отметить что в целом действительно неплохо как для начала

Спасибо.
A>Спасибо за внимание.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: Моя первая полезная программа под .NET
От: _Winnie Россия C++.freerun
Дата: 17.07.05 11:45
Оценка:
Здравствуйте, ctmike, Вы писали:

C>2) Просто из уважения к пользоватедю я бы добавил потдержку тем, кнопочку броуз. Выровнял бы текст бокс. Ну вобщемто навел бы порядок. И гланое поискал бы иконки не с 256 цветами .

В них 16 цветов! Это все, что я смог найти в c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Graphics\bitmaps\
Правильно работающая программа — просто частный случай Undefined Behavior
Моя первая полезная программа под .NET
От: Аноним  
Дата: 17.07.05 11:53
Оценка:
Прбовал на Win XP Pro, ввел имя папки, нажал-списка файлов нету


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Моя первая полезная программа под .NET
От: _Winnie Россия C++.freerun
Дата: 17.07.05 14:44
Оценка:
Здравствуйте, Alex_1, Вы писали:

A_>Прбовал на Win XP Pro, ввел имя папки, нажал-списка файлов нету


Ввел логгинг. Теперь можно посмотреть, что у тебя там за ошибка, если она залогируется, конечно.

Новая версия. Исправил несколько мелких недочетов, с учетом того что сказал Andre. Программа доступна по прежнему адресу.
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Моя первая полезная программа под .NET
От: Аноним  
Дата: 17.07.05 21:13
Оценка:
Никогда не использовал volatile, объясните его смысл.
(Он для .Net 1.0 не компилится: Invalid token 'volatile' in class, struct, or interface member declaration.)
_______________________________________ Смысл существования Вселенной заключается в обеспечении функционирования Вселенной + смысловой Довесок. v.0.1.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Моя первая полезная программа под .NET
От: Аноним  
Дата: 18.07.05 04:41
Оценка:
Приветики!

Запустил программку, выбрал корневую папку достаточно большого и загаженного диска и словил такую хрень:



See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at DiscCleaner.SortFileOrFolderBySize.System.Collections.IComparer.Compare(Object FileOrFolder1, Object FileOrFolder2)
   at System.SorterObjectArray.QuickSort(Int32 left, Int32 right)
Re: Моя первая полезная программа под .NET
От: Max404.NET Россия http://HrExpress.ru/
Дата: 18.07.05 06:08
Оценка: +1
Здравствуйте, _Winnie, Вы писали:


_W>Спасибо всем, кто помогал мне на форуме


_W>Вот, моя первая программа под .NET. Знаю, много кривостей, но делалась под определенную задачу — расчистить место на диске. Таки вычислил и стер 30 гигабайт

_W>Сделал программу для удобной чистки диска — легко посмотреть, что сколько места занимает. Введитие в верхнем поле папку(например, "C:\"), которую надо чистить и нажмите кнопку со стрелкой. Далее выбирайте файлы/папки/расширения и удаляйте их.

_W>Для работы требуется .NET framework 1.1. Если у вас установлен Visual Stuido .NET 2003, значит framework тоже установлен.


_W>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)



не совсем понимаю полезность данной программы... в чем соль?
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re: Моя первая полезная программа под .NET
От: mogadanez Чехия  
Дата: 18.07.05 14:29
Оценка:
Здравствуйте, _Winnie, Вы писали:


_W>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)


Полезная фича для твоей программы — искать дубликаты.
у меня скопилось довольно много разных папок на разных дисках где файлы местами повторяются....
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re: Моя первая полезная программа под .NET
От: LinoGE Украина http://users.livejournal.com/_linoge_/
Дата: 19.07.05 09:50
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)


Многое уже добавили по поводу реализации, а я бы добавил по поводу офрмления кода, если вы не против

1. Каждый класс в отдельном файле (об этом уже сказали, но я повторюсь, чтобы составить общую картину)

2. Не должно быть никаких публичных членов у класса, то есть полная инкапсуляция. Даже если у вас у класса всего два поля, и они должны читаться и писаться (например ExtInfo), то все же стоит добавить get и set.
Объясню. У вас будет много классов в проекте, и у каких-то свойств будут set'еры, у каких-то не будет. В итоге имеем разнобойный стиль в пределах одного проекта.

3. Единый стиль именования полей и переменных.
Мне, например, было сложно с ходу понять что такое subDirs в методе Delete(). Это переменная метода или член класса? В методе ReduceSize() например вы используете this, тем самым сразу понятно, что обращение идет к члену класса (или свойству). Некоторые члены класса у вас именованы со знаком "_" в начале имени, а некоторые нет. Я к тому, что желательно, чтобы стиль был единым. Какой — решать уже вам, ну либо это установлено правилами компании в которой вы работаете. Например члены классов начинаются символами "m_" а переменный внутри методов просто с маленькой буквы, имена классов с большой. Либо же при обращении к членами всегда использовать ключевое слово this.

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

4. У вас члены класса объявлены в разных местах, ну это наверное в следствии того, что все классы объявлены как подклассы в одном файле. Я к тому, что желательно разбивать это все по группам. Либо группируя по конструкциям (например сначала поля, потом методы, потом свойства и тд), либо группируя исходя из логики работы программы (класса), но тогда обрамлять куски кода директивами #region. Ну например кусок кода, где идет работа с файлами поместить в отдельный #region, где будут и методы и свойства и поля.

Все мои "желательно", "следует", "лучше" и тд, прошу считать как ИМХО
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re: Моя первая полезная программа под .NET
От: RagiC Беларусь  
Дата: 19.07.05 15:51
Оценка:
Не буду врать — дизайн уродский — читай статью про индуктивный пользовательский интерфейс
Автор(ы): Microsoft Corporation
Дата: 18.07.2005
Эта статья описывает новую модель пользовательского интерфейса, названную «индуктивный пользовательский интерфейс» (inductive user interface, IUI). Называемая также «индуктивной навигацией», IUI-модель показывает, как сделать прикладные программы более простыми, разбивая функциональность на экраны или страницы, которые проще как описывать, так и понимать. IUI-модель проявляется в разнообразных проектах Майкрософт, наиболее заметно — в Microsoft Money 2000. Данная статья является скорее введением в IUI, чем утвержденным и всесторонним набором рекомендаций и правил.
и дорабатывай!
Re: Моя первая полезная программа под .NET
От: Real_Asv Россия  
Дата: 19.07.05 16:06
Оценка:
Здравствуйте, _Winnie, Вы писали:


_W>Спасибо всем, кто помогал мне на форуме


_W>Вот, моя первая программа под .NET. Знаю, много кривостей, но делалась под определенную задачу — расчистить место на диске. Таки вычислил и стер 30 гигабайт

_W>Сделал программу для удобной чистки диска — легко посмотреть, что сколько места занимает. Введитие в верхнем поле папку(например, "C:\"), которую надо чистить и нажмите кнопку со стрелкой. Далее выбирайте файлы/папки/расширения и удаляйте их.

_W>Для работы требуется .NET framework 1.1. Если у вас установлен Visual Stuido .NET 2003, значит framework тоже установлен.


_W>Программа распостраняется вместе с исходником. Если будете критиковать, давайте конкретные советы по исправлению =)


Предлагаю еще заинсталить FxCop(http://www.gotdotnet.com/team/fxcop/) и натравить на исполняемый файлик. Увидите несколько полезных рекомендаций, и много не очень полезных
Control yourself.
Re[2]: Моя первая полезная программа под .NET
От: mihailik Украина  
Дата: 19.07.05 16:31
Оценка:
> Предлагаю еще заинсталить FxCop(http://www.gotdotnet.com/team/fxcop/) и
> натравить на исполняемый файлик. Увидите несколько полезных
> рекомендаций, и много не очень полезных

Рекомендуется рассматривать это так:
"несколько понятных рекомендаций, и много не очень понятных"

Ми.
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.