Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 10:47   #1
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
Восклицание А как всетаки правильно написать функцию?

Все время в моей голове присутствует следующий вопрос:
разрабатывая систему, мы планируем ее работу под определенный круг задач. Во время реализации конкретных функций получается такая вещь, якобы поскольку наш продукт будет заточен под один круг задач то реализовывать по факту функцию мы можем "в лоб", т.е. не вынося значения в переменные , не делая констант, и прочие пакости. Однако проектирование учитывая паттерны архитектуры ПО подразумевает оптимальное написание такого кода, который сможет использоваться в условиях изменчивости окружающих факторов. К примеру разрабатывая функцию для реализации конкретной задачи я могу под определенные данные выделить переменную, но я не защищен от того что завтра мне скажут использовать массив(т.е. несколько значений а не одно). Соответственно я могу выделить массив под хранение ОДНОЙ переменной с расчетом того что далее у меня уже организован цикл для работы с массивом пусть там пока и одна строка. Но если я прогадаю то массив под одно значение будет выглядеть нелепо.
И в связи с этим возникает ряд вопросов. Насколько гибко нужно проектировать функции в программе? Стоит ли предусматривать дальнейшие факторы изменчивости окружающей среды?
inmyacid вне форума Ответить с цитированием
Старый 08.05.2013, 11:01   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
оптимальное написание такого кода, который сможет использоваться в условиях изменчивости окружающих факторов
из этого следует что
ФУНКЦИЯ должны зависеть и воздействовать ИСКЛЮЧИТЕЛЬНО на свои параметры.

Если мы изменяем параметры (переменная -> массив) то ЭТО БУДЕТ уже ДРУГАЯ функция.

Цитата:
Стоит ли предусматривать дальнейшие факторы изменчивости окружающей среды?
Настолько чтобы совсем не зависеть от среды кроме параметров
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.05.2013, 11:21   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
inmyacid
Есть такое понятие - сцепляемость объектов кода. То насколько одни объекты программы (функции, методы, данные) зависят от состояния других объектов. Соответственно чем меньше объекты зависимы друг от друга, тем они более универсальны и независимы (и изменение работы одной функции не влияет на работу остальных частей программы, либо требует минимальных изменений). В данном случае да - в идеале функция всегда должна выдавать один результат, не влияя не на что более (даже на собственные параметры) и зависить исключительно от тех параметров, которые описаны в ее интерфейсной части.
Цитата:
К примеру разрабатывая функцию для реализации конкретной задачи я могу под определенные данные выделить переменную, но я не защищен от того что завтра мне скажут использовать массив(т.е. несколько значений а не одно).
Если существуют такие опасения, то:
- можно использовать ссылку в качестве параметра (если язык это допускает);
- использовать абстрактный тип данных. То есть к примеру не массив, а дженерик/шаблон списка.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.05.2013 в 11:24.
Utkin вне форума Ответить с цитированием
Старый 16.05.2013, 07:43   #4
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Есть такое понятие - сцепляемость объектов кода. То насколько одни объекты программы (функции, методы, данные) зависят от состояния других объектов. Соответственно чем меньше объекты зависимы друг от друга, тем они более универсальны и независимы (и изменение работы одной функции не влияет на работу остальных частей программы, либо требует минимальных изменений). В данном случае да - в идеале функция всегда должна выдавать один результат, не влияя не на что более (даже на собственные параметры) и зависить исключительно от тех параметров, которые описаны в ее интерфейсной части.
Если существуют такие опасения, то:
- можно использовать ссылку в качестве параметра (если язык это допускает);
- использовать абстрактный тип данных. То есть к примеру не массив, а дженерик/шаблон списка.
эх, а что ж вы не поделились статьёй Вот этой наткнулся совершенно случайно, и считаю что весьма ценная информация. Если вы писали еще что нибудь на тему ООП было бы интересно взглянуть
inmyacid вне форума Ответить с цитированием
Старый 16.05.2013, 14:15   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
эх, а что ж вы не поделились статьёй
Форумный робот PBLOG сам опубликовал ее. Он (или кто-то из людей под его ником) периодически выкладывает разные статьи в разделе обсуждение статей данного форума.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно написать функцию загрузки файлов из интернета..? Человек_Борща Работа с сетью в Delphi 5 07.07.2011 16:15
Как правильно объявить и определить функцию? -ushёl- Общие вопросы C/C++ 0 14.06.2010 13:30
Как правильно использовать функцию ExtFloodFill. SkAndrew Общие вопросы Delphi 0 14.04.2010 14:05
как правильно написать функцию? -ushёl- Общие вопросы C/C++ 6 26.02.2010 20:11
Как правильно описать функцию? аукшщ Общие вопросы C/C++ 2 19.01.2009 11:37