Создавать ли пустой файл?
От: igna Россия  
Дата: 06.02.08 12:04
Оценка:
Ситуация: Функция/метод создает файл, пишет в него некий заголовок и передает его дескриптор или связанный с ним поток другим функциям/методам, которые тоже иногда пишут кое-что в этот файл. А иногда не пишут.

Запрос пользователя (change request): Если никакой информации кроме заголовка в файле нет, нечего и файл создавать.

Мнение программиста: Если пустой файл никому не мешает, нечего и избыточную логику в программе городить.

А вы что скажете?
Re: Создавать ли пустой файл?
От: SergH Россия  
Дата: 06.02.08 12:07
Оценка:
Здравствуйте, igna, Вы писали:

I>А вы что скажете?


Смотря как часто это происходит.
Делай что должно, и будь что будет
Re: Создавать ли пустой файл?
От: _pk_sly  
Дата: 06.02.08 12:22
Оценка:
I>Ситуация: Функция/метод создает файл, пишет в него некий заголовок и передает его дескриптор или связанный с ним поток другим функциям/методам, которые тоже иногда пишут кое-что в этот файл. А иногда не пишут.

I>Запрос пользователя (change request): Если никакой информации кроме заголовка в файле нет, нечего и файл создавать.


I>Мнение программиста: Если пустой файл никому не мешает, нечего и избыточную логику в программе городить.


I>А вы что скажете?


попробуйте создать пустой exe-файл
попробуйте создать пустой C++ — файл

с другой стороны, попробуйте создать пустой mp3 или perl-скрипт

так что, как решите, так и будет.
Re: Создавать ли пустой файл?
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 06.02.08 12:30
Оценка: 1 (1) +4
Здравствуйте, igna, Вы писали:

I>А вы что скажете?

Чтобы не было лени по реализации так названной программистом "избыточной логики", в файл должны писать не все, кому не лень, а только один специальный класс вроде логгера.
Re: Создавать ли пустой файл?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 06.02.08 12:50
Оценка: 2 (2) +2
Здравствуйте, igna, Вы писали:

I>Ситуация: Функция/метод создает файл, пишет в него некий заголовок и передает его дескриптор или связанный с ним поток другим функциям/методам, которые тоже иногда пишут кое-что в этот файл. А иногда не пишут.


I>Запрос пользователя (change request): Если никакой информации кроме заголовка в файле нет, нечего и файл создавать.


I>Мнение программиста: Если пустой файл никому не мешает, нечего и избыточную логику в программе городить.


I>А вы что скажете?


Заказчик всегда прав.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 09:45
Оценка:
Здравствуйте, eao197, Вы писали:

E>Заказчик всегда прав.


Он не заказчик, он пользователь.
Re[3]: Создавать ли пустой файл?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.02.08 09:50
Оценка: +1 :))
Здравствуйте, igna, Вы писали:

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


E>>Заказчик всегда прав.


I>Он не заказчик, он пользователь.


Боюсь, эту тонкую разницу сможет различить только программист, но не заказчик с пользователем.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 10:20
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Чтобы не было лени по реализации так названной программистом "избыточной логики", в файл должны писать не все, кому не лень, а только один специальный класс вроде логгера.


А чтобы не было лени по реализации специального класса?

История такова:

1) Сначала (несколько лет тому назад) программа выводила некую последовательность строк в файл. В случае пустой последовательности файл не создавался. Реализовать это было просто, достаточно было одного if.

2) Потом добавили вывод еще одной последовательности строк в тот же файл. Сделано было так: в случае непустой второй последовательности файл открывался повторно на добавление.

3) Затем формат файла переделали в XML, соответственно понадобился заголовок и наоборот footer. Заголовок писали непосредственно перед выводом первой последовательности, footer — непосредственно после вывода второй. Таким образом ввели 2 бага, поскольку заголовок не выводился, если пустой была первая последовательность, footer — если вторая.

4) Через некоторое время второй баг был обнаружен и его в спешке пофиксили добавлением вывода footer-а непосредственно после вывода первой последовательности, что привело к появлению третьего бага, поскольку footer в некоторых случаях выводился дважды.

Отлаживая это подумал, вот если бы с самого начала не пытались избежать создания файла с пустым содержанием, все добавления прошли бы как по маслу. Но оба мнения, которые я привел в первом посте (пользователя и программиста) мои; как пользователю пустые файлы мне тоже не нужны. Хотя отсутствие багов важнее.

Понимаю, что решение зависит от конкретного случая, но хотелось бы, чтобы кто-нибудь написал бестселлер вроде "Не приставайте к программисту с ненужными пожеланиями". (Хотя возможно в данном случае это была инициатива программиста, тогда книжка другая нужна.)
Re[4]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 10:29
Оценка:
Здравствуйте, eao197, Вы писали:

E>Боюсь, эту тонкую разницу сможет различить только программист, но не заказчик с пользователем.


Стоят заказчик с пользователем напротив друг друга и не могут различить кто есть кто? Наверное приемка программы успешно прошла.
Re[3]: Создавать ли пустой файл?
От: VsevolodC Россия  
Дата: 07.02.08 11:11
Оценка:
Здравствуйте, igna, Вы писали:

I>3) Затем формат файла переделали в XML, соответственно понадобился заголовок и наоборот footer. Заголовок писали непосредственно перед выводом первой последовательности, footer — непосредственно после вывода второй. Таким образом ввели 2 бага, поскольку заголовок не выводился, если пустой была первая последовательность, footer — если вторая.


тут однозначно ошибка проектирования, XML для добавления очень неудобен

по поводу незаписи пустого файла, логично было б в нужный момент времени
проверять, пустой ли файл и, если пустой, удалять его
Re[4]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 11:17
Оценка:
Здравствуйте, VsevolodC, Вы писали:

VC>по поводу незаписи пустого файла, логично было б в нужный момент времени

VC>проверять, пустой ли файл и, если пустой, удалять его

Он будет не совсем пустой, там заголовок.
Re[5]: Создавать ли пустой файл?
От: VsevolodC Россия  
Дата: 07.02.08 11:25
Оценка:
Здравствуйте, igna, Вы писали:

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


VC>>по поводу незаписи пустого файла, логично было б в нужный момент времени

VC>>проверять, пустой ли файл и, если пустой, удалять его

I>Он будет не совсем пустой, там заголовок.


значит, файл с заголовком без данных
Re[6]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 11:40
Оценка:
Здравствуйте, VsevolodC, Вы писали:

VC>значит, файл с заголовком без данных


Скорее всего определить, есть там данные или нет, будет не проще чем не допустить создания файла без данных. Наверное даже сложнее будет.
Re[7]: Создавать ли пустой файл?
От: fmiracle  
Дата: 07.02.08 11:57
Оценка:
Здравствуйте, igna, Вы писали:

I>Скорее всего определить, есть там данные или нет, будет не проще чем не допустить создания файла без данных. Наверное даже сложнее будет.


если заголовок неизменен, то это длина файла = длине заголовка.

Но имхо, лучше всего сделать спец класс, в который тупо пихать данные. А тот уже сам решает надо или нет создавать файл.

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


А если же интересует общий ответ, то его нет. В некоторых случаях лишние пустые файлы мешаются и их быть не должно. А иногда от них ни тепло ни холодно — нехай будут. Все зависит от задачи.
Re[4]: Создавать ли пустой файл?
От: fmiracle  
Дата: 07.02.08 12:00
Оценка: +2 :)
Здравствуйте, eao197, Вы писали:

E>Боюсь, эту тонкую разницу сможет различить только программист, но не заказчик с пользователем.


Заказчик платит деньги, пользователь использует программу. Могут быть в одном лице, могут быть в разных.

По любому — пользователь говорит, что он хочет, программист говорит цену. Заказчик либо платит, либо объясняет пользователю, что ему лучше жить без этой фичи Даже если заказчик и пользователь одно лицо
Re[5]: Создавать ли пустой файл?
От: igna Россия  
Дата: 07.02.08 12:07
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>По любому — пользователь говорит, что он хочет, программист говорит цену. Заказчик либо платит, либо объясняет пользователю, что ему лучше жить без этой фичи Даже если заказчик и пользователь одно лицо


А если программист и пользователь в некотором смысле одно лицо? Этот файл читается другими программами.
Re[5]: Создавать ли пустой файл?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.02.08 12:14
Оценка:
Здравствуйте, fmiracle, Вы писали:

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


E>>Боюсь, эту тонкую разницу сможет различить только программист, но не заказчик с пользователем.


F>Заказчик платит деньги, пользователь использует программу. Могут быть в одном лице, могут быть в разных.


F>По любому — пользователь говорит, что он хочет, программист говорит цену. Заказчик либо платит, либо объясняет пользователю, что ему лучше жить без этой фичи Даже если заказчик и пользователь одно лицо


Показательно, что начинают доказывать разницу между пользователем и заказчиком программисты.

Между тем ситуация очень ясна: пользователь программы говорит -- мне не нужны пустые файлы. Значит, программист должен рассматривать это как недостаток своего продукта. Недостатки нужно устранять, поскольку продукт с недостатками может привести к потере заказчика. А если (в пределе) программист теряет работу потому что заказчик отказался от продукта из-за неустраненных недостатков, то, censored, ЕСТЬ ЛИ РАЗНИЦА В ТОМ, УКАЗАЛ ЛИ НА НЕДОСТАТОК ПОЛЬЗОВАТЕЛЬ ИЛИ ЗАКАЗЧИК?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Создавать ли пустой файл?
От: SergH Россия  
Дата: 07.02.08 12:15
Оценка:
Здравствуйте, igna, Вы писали:

I>А если программист и пользователь в некотором смысле одно лицо? Этот файл читается другими программами.


Ну так соберитесь все втроём и договоритесь
Делай что должно, и будь что будет
Re[7]: Создавать ли пустой файл?
От: VsevolodC Россия  
Дата: 07.02.08 12:27
Оценка:
Здравствуйте, igna, Вы писали:

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


VC>>значит, файл с заголовком без данных


I>Скорее всего определить, есть там данные или нет, будет не проще чем не допустить создания файла без данных. Наверное даже сложнее будет.


может и сложнее, на этот момент
а если еще в 5-6 местах в этот файл будут делаться записи?
если есть проблема, ее надо локализовать, это уменьшит число потенциальных багов

когда результатом работы программной системы является файл, имхо надо в самом начале
создавать файл без данных (в вашем случае с одним заголовком), а в конце работы удалять,
если ничего не добавилось

если же, как вы утверждаете, этот файл читает другая программа, значит она может определить,
присутствуют там данные, или нет; значит может и удалить его

кстати, существование файла без данных может служить признаком того, что какая-то работа производилась,
пусть и с нулевым результатом
Re[6]: Создавать ли пустой файл?
От: GlebZ Россия  
Дата: 07.02.08 13:52
Оценка:
Здравствуйте, eao197, Вы писали:

E>Показательно, что начинают доказывать разницу между пользователем и заказчиком программисты.


E>Между тем ситуация очень ясна: пользователь программы говорит -- мне не нужны пустые файлы. Значит, программист должен рассматривать это как недостаток своего продукта. Недостатки нужно устранять, поскольку продукт с недостатками может привести к потере заказчика. А если (в пределе) программист теряет работу потому что заказчик отказался от продукта из-за неустраненных недостатков, то, censored, ЕСТЬ ЛИ РАЗНИЦА В ТОМ, УКАЗАЛ ЛИ НА НЕДОСТАТОК ПОЛЬЗОВАТЕЛЬ ИЛИ ЗАКАЗЧИК?

Все таки разница есть. Одни платят, другие желают но не платят. Для первых исполнение желаний обязательно, если он за эти желания заплатил. Для вторых желательно, ибо всегда есть желание быть полезным, ну и маркетинг рулит в будущих продажах.
... << RSDN@Home 1.2.0 alpha rev. 789>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.