![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| Sanzec |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.10.2008 Репутация: нет Всего: нет |
Здравствуйте!
Не давно появилась такая идея, почему бы не использовать функции в самих функциях ? Получается по аналогии с локальными переменным. Покажу на примере:
Из примера выше видно, что мы можем в любом месте программы обратиться к переменной a. К переменной b мы можем обратиться исключительно в функции int main(). Довольно удобно и практично использовать локальные переменные. Почему бы не использовать по аналогии с локальными перменными, локальные функции? Все мы прекрасно знаем, что глобальные переменные делают код очень плохим. Так почему же мы все используем глобальные функции? Теперь пример:
Локальные функции должны обладать свойствами локальных переменных. Следовательно, локальные функции будут обладать теми же достоинствами что и локальные перменные. Мне это идея очень нравится. Кто что думает о таком подходе? Может такое используется в каком-нибудь экзотическом языке? Давайте обсудим. |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
в С++ можно использовать локальные классы, вложенные ф-ии нельзя
|
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Объявления class-а с private functions, по моему даст такой же эффект как описанные локальные функции.
-------------------- Никогда не говори никогда |
|||
|
||||
| Sanzec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.10.2008 Репутация: нет Всего: нет |
Не всегда использование ООП оправдано. И все таки, все переменные в том же С++ - локальные, а функции - только глобальные. Как мне кажется, неправильно. Реализация таких функций была бы отличным инструментом. Например, в системном программировании.
|
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Мне эта идея тоже нравится, плодотворно использую её уже не первый год. Тут главное применять локальные функции с умом, там где это действительно полезно и украшает решение. Даже не знаю, что на это сказать... А Delphi, C#, Ruby по-твоему экзотические языки? Во всяком случае в них есть поддержка локальных функций, кроме того данная фича есть во всех языках, поддерживающих функциональную парадигму программирования, там они называются лямбда-выражениями.
Это сообщение отредактировал(а) source777 - 5.12.2008, 23:08 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
в с++ есть анонимные пространства имен, пишите ваши ф-ии туда
к тому-же не забываем про срр файлы, там то-же можно скрывать реализацию, ищи в гугле "идиома pimpl" ps лично мне не в с++ не хватает сопрограмм... |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
В принципе многие достижения цивилизованных ЯП(в том числе и лямбда-выражения) доступны в С++ через Boost, синтаксис конечно тошнотворный, но в крайнем случае лучше, чем ничего.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
Вложенные функци также есть в С99, ЕМНИП.
|
|||
|
||||
![]()
|
| Правила раздела "Философия программирования": | |
|
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Философия программирования | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |