Методы решения проблем: обзор способов и рекомендации. Лучше всего использовать частные методы или защищенные методы? Какой метод лучше

Ребята, мы вкладываем душу в сайт. Cпасибо за то,
что открываете эту красоту. Спасибо за вдохновение и мурашки.
Присоединяйтесь к нам в Facebook и ВКонтакте

Все мы любим откладывать дела на потом. Кто в меньшей степени, ну а кто и в большей. Избежать этого и перестать терять драгоценное время, начать работать полноценно и продуктивно может помочь техника управления временем, придуманная итальянцем Франческо Чирилло (Francesco Cirillo) и звучно названная им «Метод помидора» в честь кухонного таймера в виде этого овоща, которым он и измерял свое время.

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

5 главных правил «Метода помидора»

  • Определите и четко сформулируйте задачу. Очень важно понимать, что и зачем вы собираетесь делать следующие 25 минут.
  • Заведите таймер на 25 минут. Почему именно 25? Согласно исследованиям психологов, человек может концентрироваться на чем-то максимум 30 минут. А 25 минут - это же меньше, чем полчаса, и поэтому намного приятнее. Любой сможет проработать 25 минут, не отвлекаясь, и это достаточно для того, чтобы многое успеть и закончить. 25 минут - это и есть один «помидор». Один «помидор» беспрерывной работы.
  • Уберите все отвлекающие факторы. Дайте себе слово не отвлекаться от задачи все 25 минут. Ни на звонки, ни на сообщения или письма, ни на коллег. Только работа над поставленной задачей.
  • 25 минут прошло? Сделайте перерыв на 5 минут. В это время можно ответить на пропущенные звонки и письма, а лучше встать и размяться. Этот шаг самый главный в технике помидора - вознаграждение. Вы усердно трудились 25 минут, и теперь на 5 минут отвлекитесь на что-то приятное. Вы вознаграждаете себя и закрепляете хорошую привычку: работать сосредоточенно и эффективно.
  • Каждые 1,5 - 2 часа (после 4-5 «помидоров») сделайте большой перерыв на 20-30 минут.

«Метод помидора» помогает нам снизить страх перед важной задачей: проще начать - значит проще закончить. И в результате сосредоточенной работы без дерганий и стрессов качество и количество нашей работы повышается.

  • Если не получается сразу следовать этому ритму, не расстраивайтесь. Это нормально. Особенно когда вы занимаетесь чем-то новым и непривычным. Просто продолжайте работать и через несколько дней втянетесь.
  • Главное - просто начать. Помните: небольшой дискомфорт перед началом бывает почти у всех. Это неприятное дело дергает за ниточки наш мозг. Просто начните, и уже через несколько минут дискомфорт исчезнет.
  • Награда - обязательно! Раз уж нам все равно нужно работать, то давайте делать это с удовольствием.
  • Отвлечения. Они обязательно будут. Это закон жизни. Начинаешь работать, и сразу кто-то норовит помешать. Постарайтесь обеспечить себе спокойное место. Объясните людям, чтобы не мешали. Отключите телефон, закройте все ненужные окна в браузере, можно вообще отключить интернет. Старайтесь не отвлекаться на разные мысли и идеи, которые приходят в голову и не относятся к выполняемому делу. Ведь если поддаться им, то все, работа остановилась... Иногда на 20 минут. Иногда на несколько часов. Лучший способ с этим справиться - немного потерпеть. Потому что сильнейшее желание что-то сделать бывает только первые несколько секунд. Но если сразу ему не поддаться, то оно быстро перестанет быть таким сильным. А вы продолжите дальше сосредоточенно работать. И в перерыве - пожалуйста, делайте все, что угодно.
  • Заточите технику под себя. «Метод помидора» можно подстраивать под себя и свои нужды самым разным способом. Все зависит от вашего состояния, чем конкретно вы занимаетесь, и ваших предпочтений. Сколько времени вы будете работать - 25 минут, 22 или 40, - зависит от вашего настроения и того, что вы делаете. Ведь очень многое может зависеть от состояния. Если бодрость накатила редкостная - это одно. Если желания нет и вообще как-то мрачно за окном, - другое. Чем лучше вы знаете себя, тем эффективнее сможете использовать эту технику.

10 ответов

Мой инстинкт заключается в том, чтобы держать их в тайне, пока вам не понадобится быть в противном случае.

Было высказано мнение (к сожалению, я упустил ссылку), что частные методы являются антисоциальными, во многом аналогично тому, как сделать их "окончательными", в том, что он довольно диктатор о том, как люди могут использовать ваш код.

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

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

Я думаю, что это сводится к вопросам: "Все ли запрещено, если только это не разрешено" или "Разрешено все, если только специально запрещено".

Еще один фактор заключается в том, что легко сделать частный метод защищенным в будущей версии. Практически невозможно приватизировать метод, когда он защищен, так как вы никогда не знаете, какой другой код вы считаете недействительным.

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

В общем, если вы не разрабатываете для наследования, вы должны запретить его.

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

Не позволяйте людям прикасаться к вашим частям:)

Как сказано, если вы собираетесь продлить класс позже, вы всегда сможете его изменить.

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

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

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

Interface sound { public function makeSound(); } class bark implements sound{ public function makeSound() { return "Bark!!!"; } } class mew implements sound{ public function makeSound() { return "Mewmew!!!"; } } class forLeggedAnimal { private $sound; public function forLeggedAnimal($sound){ $this->sound = $sound; } public function eat(){ echo $this->sound->makeSound(); } } $cat = new forLeggedAnimal(new mew()); $dog = new forLeggedAnimal(new bark());

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

Если реализованная вами функция относится к классу и не должна использоваться вне контекста этого класса, не позволяйте ей наследоваться. Например, если бы у нас была иерархия животных, и у одного из животных было что-то невероятно уникальное для них, скажем, "layEggsInSand()", как черепаха. Это может быть совершенно уникальным для черепахи (черепаха, что бы ни было!) Поэтому не должно быть унаследовано каким-либо другим животным. В этом контексте мы бы сказали, что это личное. С другой стороны, если функция "walk()", то она не уникальна, поэтому она должна быть наследуемой.

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

Обычно я использую private в очень специфическом случае, когда метод/переменная является очень внутренним и не должен быть прочитан или написан каким-либо другим подклассом (так почти никогда не бывает). Единственный случай, когда я использую приватную переменную, - это пример:

Final public function init():void { if(!_initialized) { _init(); _initialized = true; } } protected function _init():void { // specific code. }

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

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

    На концах вы почти меняете весь аксессор на защищенный, чтобы получить возможность расширения класса!

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

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

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

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

Используйте эти правила каждый день и увеличивайте свой учебный потенциал.

Как лучше запоминать информацию:

Правило № 1: Сначала быстрое чтение, потом — детализированное

Обычно люди стараются запомнить все детали из прочитанного материала за один присест, но лучший способ выучить сложную информацию – это разделить процесс чтения на два или три этапа.

Сначала пробегите глазами по тексту, который Вам нужно прочитать (две-три страницы будет в самый раз), читая поверхностно. Не заставляйте себя запоминать что-либо во время первого чтения.

Теперь вернитесь к этому же материалу, читая медленно в этот раз. Произносите трудные слова вслух. Подчеркивайте сложные слова или ключевые понятия.

Если Вы все еще чувствуете себя озадаченным, пройдитесь по материалу в третий раз. Вы будете поражены тем, как много информации поместилось в Вашей голове!

Правило № 2: Делайте заметки

Изучая новый материал (на лекции, вебинаре, просто читая что-то), делайте заметки.

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

Опирайтесь на концепты, которые Вы записали, но не четко объяснили, записывая свои мысли. Посмотрите определения ключевых слов и внешних ресурсов. Запишите информацию, которую Вы нашли, в таком виде, в каком Вам удобно. Это закрепит информацию в вашей памяти.

Правило № 3: Учите других

Мы лучше всего запоминаем, когда учим других. Вот почему учебные группы могут быть очень эффективными, если их правильно использовать. Вместо того, чтобы использовать свою группу только для выполнения каких-либо заданий, попросите своего партнера «прогнать» Вас по пройденному материалу, заставить Вас устно еще раз повторить то, что Вы выучили.

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

Если Вы не можете найти такого «ученика», расскажите Вашему партнеру или соседу по комнате о том, что Вы узнали в классе. Не повторяйте материал, который Вы уже хорошо знаете.

Выберите информацию, с пониманием которой у Вас возникли проблемы, и заставьте себя объяснить ее кому-то за обедом или во время прогулки с собакой. Это позволит Вам действительно понять всю суть материала, который Вы учили.

Правило № 4: Говорите сами с собой

Хотите – верьте, хотите – нет, но слушая собственный голос, Вы сможете легче запоминать новые факты. Запишите на диктофон, как Вы читаете ключевые слова и определения вслух, а позже прослушайте. Этот трюк сделает Ваше самообучение более эффективным. У Вас будут задействованы несколько чувств одновременно — слуховые, вербальные и визуальные — плюс Вы будете более внимательны, так как чтение вслух требует концентрации.

Есть еще одна забавная хитрость. Она заключается в том, чтобы сделать из гибкой ПВХ трубы «телефонную трубку», которую Вы могли бы подносить ко рту и прикладывать к уху во время чтения вслух. Хотите – верьте, хотите – нет, но концентрированный звук собственного голоса, проходящий через этот «телефон», будет проще запомнить, чем Ваш обычный голос во время чтения материала вслух.

Правило № 5: Используйте визуальные подсказки

Многие из нас запоминают все с помощью визуального канала. Вы можете фактически запечатлеть в своем сознании образ формулы, определения или понятия, и сможете легко вспомнить нужную информацию во время теста или в случае необходимости.

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

Например, если Вам нужно запомнить латинский или греческий корень слова, Вы можете рисовать картинки, которые символизируют значения этих слов. Латинское слово «аqua» означает воду, так что Вы можете написать «aqua» голубым маркером и нарисовать рядом каплю. Латинское слово «spec» означает смотреть, так что Вы можете нарисовать рядом очки.

Карточки также являются полезным инструментом для визуального запоминания, особенно если Вы используете картинки и цвета, чтобы сделать их. Вы на самом деле может вспомнить слово или формулу просто потому, что вспомните, как Вы мучились, решая каким цветом стоит написать это определение – оранжевым или зеленым. Цвет может вызвать Вашу зрительную память, что и поможет Вам получить доступ к информации.

Посмотрите интересное видео про визуальные заметки, помогающие быстро запоминать информацию:

Правило № 6: Используйте шокирующий стимул

Было ли у Вас когда-нибудь ощущение во время учебы, что Вы просто неспособны запомнить важную информацию?

Хотите – верьте, хотите — нет, но использование какого-нибудь шокирующего физического стимула поможет Вам понять, а затем и запомнить сложный материал.

Согласно исследованию, проводимо на тему: «Как лучше запоминать», если положить руку в миску с ледяной водой во время учебы, то это поможет запомнить, а потом вспомнить нужную информацию. Это происходит потому, что отрицательные раздражители активируют часть Вашего мозга, отвечающую за память (предположительно это происходит для того, чтобы мы лучше запоминаем негативный опыт, чтобы не повторять его, но это так же эффективно работает при обычном запоминании информации).

Вы можете использовать ледяную воду, что-то горячее или умеренную боль, чтобы помочь себе запомнить сложную информацию. Попробуйте щипать себя за руку, держа мешочек со льдом в руке, или держите чашку горячего чая во время учебы, чтобы стимулировать Вашу память. Главное не навредить себе по-настоящему!

Правило № 7: Жуйте жвачку

Учителя могут запрещать жевание резинки на своих уроках, потому что они не хотят потом отдирать ее из-под столов, но сам процесс жевания жвачки может помочь Вам лучше учиться и справляться с тестами.

Одно исследование изучало эффект от жевания резинки во время теста (на примере выпускников). Исследование показало, что жевание резинки помогло ученикам закончить тест на 20 минут раньше.

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

Как жвачка помогает лучше запоминать информацию?

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

Какие жвачки лучше действуют?

Не имеет значения, жуете ли Вы жвачку с сахаром или без. Значение имеет ее вкус. Переходите на жвачки со вкусом мяты, поскольку мята действует как психический стимулятор и поможет Вам чувствовать себя спокойным и сконцентрированным.

Правило № 8: Участвуйте в работе класса, даже когда чувствуете дискомфорт

Возникли проблемы с определенным понятием?

Большинство из нас предпочитают отсидеться где-нибудь в уголке и остаться незамеченными в классе, пока нам не разложат весь материал по полочкам. Но эта привычка всегда будет мешать Вам в процессе обучения. Поднимите руку, задайте вопрос или добровольно поучаствуйте в обсуждении темы, с которой у Вас возникли затруднения.

Вы не посещаете групповые занятия? Найдите кого-то, кто понимает нужную Вам тему, и обратитесь за советом или помощью. Пусть вас беспокоит то, что Вы что-то не понимаете.

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

Правило № 9: Выделяйте и перефразируйте то, что читаете

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

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

Правило № 10: Придумывайте стишки или песни

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

Вам может оказаться легче запомнить формулу, если Вы придумаете для нее музыкальное оформление.

Как формулы помогают лучше запоминать информацию?

Многие формулы не имеют для нас никакого смысла. Они выглядят как список случайных цифр и букв, или кажутся набором случайных инструкций, которым не хватает связующего элемента.

Если Вы превратите формулу в песню или стих, Вы осознаете то, что когда-то казалось иррациональным, и это осмысление материала позволит Вашему мозгу лучше воспринять информацию и сохранить ее таким образом, чтобы потом к ней можно было легко получить доступ.

Правило № 11: Ищите ассоциации

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

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

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

Правило № 12: Делайте перерывы во время учебы

Если Вы постоянно учитесь на протяжении длительного периода времени, то можете заметить, что Ваша производительность падает по мере того, как долго Вы просиживаете за занятиями. Исследования доказывают, что во время учебы необходимо делать 10-минутный перерыв каждый час, чтобы максимизировать производительность.

С чего должен состоять такой перерыв?

Обязательно встаньте, пойдите в туалет, выпейте чего-то или перекусите. Лучше всего покинуть комнату, в которой Вы сидите, и немного подвигаться, чтобы улучшить кровоток. Если у Вас есть такая возможность, попрыгайте или сделайте растяжку, чтобы получить прилив адреналина и взбодриться. После этого можете опять браться за работу.

Правило № 13: Найдите практическое применение

Возникли проблемы с запоминанием формулы или теории?

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

Представьте, как можно использовать на практике эту формулу или понятие для решения реальной проблемы. Если это возможно, разыграйте или мысленно представьте себе влияние этой проблемы в практической плоскости. Это поможет Вам понять формулу или понятие и в случае надобности легко вспомнить.

Правило № 14: Создайте физический образ

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

Например, оценить важность микроскопического анализа Вы сможете, взглянув на изображение цепи ДНК или анатомии клетки. Если вы не можете создать физический образ или картинку, найдите изображение в Интернете. Это поможет Вам отчетливо представить проблему.

Правило № 15: Читайте важную информацию перед сном

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

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

Правило № 16: Практикуйте дыхательные упражнения

Стресс подавляет способность к концентрации и усложняет доступ к информации, которую Вы уже выучили.

Вот почему Вы спокойно можете понять принцип, находясь в классе, но затем зайти в тупик во время написания теста. Вы знаете, что информация находится где-то на задворках Вашего разума, но Вы просто не можете получить доступ к ней. Это происходит потому, что стресс отключает Вашу возможность концентрироваться на чем-либо, у Вас остаётся только реакция «бей или беги».

Чтобы побороть стресс, делайте на протяжении от трех до пяти минут.

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

Повторяйте в том же духе, не беспокоясь ни о чем и фокусируя все внимание на том, как приятно просто дышать, пока таймер не прозвонит.

Попробуйте выше перечисленные способы запоминания информации и найдите самые эффективные для Вас.

Удачи в усвоении новой информации!

Во многих моих проектах PHP я заканчиваю тем, у кого есть непубличные функции, которые я не намерен распространять.

Лучше ли объявлять их защищенными или частными?

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

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

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

Было высказано мнение (к сожалению, я упустил ссылку), что частные методы являются антисоциальными, во многом аналогично тому, как сделать их «окончательными», поскольку он довольно диктаторский о том, как люди могут использовать ваш код.

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

Я думаю, вы должны только разоблачить, что вам нужно, когда вам нужно. Это облегчает оценку воздействия изменений. т.е. если метод является закрытым, вы знаете, что воздействие будет минимальным, если вы его измените.

Если вы намереваетесь создать класс для наследования, вы должны его спроектировать таким образом, то есть сделать эти методы защищенными, чтобы другие разработчики могли изменять поведение класса в соответствии с вашими линиями. Простое создание всех защищенных методов – не очень хороший дизайн. Имейте в виду, что все защищенные методы становятся частью общедоступного API, поэтому, если вы измените ситуацию позже, вы нарушите код других людей.

В общем, если вы не разрабатываете для наследования, вы должны запретить это.

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

Я догадываюсь, что это сводится к вопросам: «Все ли запрещено, если только это не разрешено» или «Все разрешено, если специально не запрещено.

Еще один фактор заключается в том, что легко сделать частный метод защищенным в будущей версии. Практически невозможно приватизировать метод, когда он защищен, так как вы никогда не знаете, какой другой код вы признаете недействительным.

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

Не позволяйте людям прикасаться к вашим частям 🙂

Обычно я избегаю private . Мое рассуждение гласит, что если у вас есть отношение наследования между двумя классами, и есть частные члены, то это очень убедительно свидетельствует о том, что вы должны учитывать частные детали в отдельный объект.

Я бы назвал методы приватными. Это ясно указывает, что они не являются частью публичного API.

Не беспокойтесь о том, что может произойти в будущем.

Если реализованная вами функция относится к классу и не должна использоваться вне контекста этого класса, не допускайте ее наследования. Например, если бы у нас была иерархия животных, и у одного из животных было что-то невероятно уникальное для них, скажем, «layEggsInSand ()», как черепаха. Это может быть совершенно уникальным для черепахи (черепаха, что бы ни было!) Поэтому не должно быть унаследовано каким-либо другим животным. В этом контексте мы бы сказали, что это личное. С другой стороны, если функция «walk ()», то она не уникальна, поэтому она должна быть наследуемой.

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

Как сказано, если вы собираетесь расширить класс позже, вы всегда сможете его изменить.

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

В основном, что делать, это поддержка композиции над наследованием и программа для интерфейсов, а не реализации.

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

Interface sound { public function makeSound(); } class bark implements sound{ public function makeSound() { return "Bark!!!"; } } class mew implements sound{ public function makeSound() { return "Mewmew!!!"; } } class forLeggedAnimal { private $sound; public function forLeggedAnimal($sound){ $this->sound = $sound; } public function eat(){ echo $this->sound->makeSound(); } } $cat = new forLeggedAnimal(new mew()); $dog = new forLeggedAnimal(new bark());

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

Обычно я использую private в очень специфическом случае, когда метод / переменная является очень внутренним и не должен быть прочитан или написан каким-либо другим подклассом (так что почти никогда не бывает). Единственный случай, когда я использую приватную переменную, – это пример:

Final public function init():void { if(!_initialized) { _init(); _initialized = true; } } protected function _init():void { // specific code. }

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

Давайте рассмотрим достаточно важный, но не совсем очевидный для многих вопрос - в чем разница между «кассовым методом» и «методом начислений».

Начнем прежде всего с того, что определим, к чему эти термины вообще относятся.

К чему относятся эти термины?

Они относятся к методу исчисления прибыли за период . А не к «методу учета», «системе учета» или даже «стилю мышления». Т.е. именно вычислить прибыль за период мы можем либо кассовым методом либо методом начислений.

В чем принципиальная разница?

Разница состоит в методе отражения доходов и расходов на выбранный учетный период . Т.е. в том, какие хозяйственные операции за период считать расходом, а какие доходом. Понятно, что за всё время существования предприятия, все поступления денег являются доходом, а все выплаты являются расходом. Но нас интересует не всё время работы, а каждый конкретный период . Квартал, месяц, неделя или даже день. Когда мы разбиваем нашу временную прямую на отрезки, и возникает разница.

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

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

Какой метод лучше?

Это зависит от ситуации.

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

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

Разницу между ними можно проиллюстрировать на примере расхода бензина в автомобиле. Расход бензина - это некий показатель, которым мы используем для измерения «эффективности» автомобиля (и стиля вождения). Чем ниже расход бензина, тем лучше.

«Метод начисления» - это если мы сравниваем пройденное за период расстояние с объемом бензина, потраченным за этот же период. Для этого мы используем бортовой компьютер. Мы можем за одну неделю проехать 100 км и потратить 7 литров (7 л/100км), а за другую проехать 1000 км и потратить 60 л (6 л/100км). Очевидно, что за вторую неделю мы ездили экономичнее или «эффективнее».

«Кассовый метод» - это если мы сравниваем пройденное за период расстояние с объемом бензина, купленным (залитым в бак) за этот же период. Мы можем за одну неделю залить 50 л и проехать 1 км (5000 л/100км), а на следующей неделе долить еще 1 л и проехать 100 км (1 л/100км). Очевидно, что результаты не сравнимы, в них нет смысла.

Когда следует использовать кассовый метод?

Кассовый метод тем не менее не просто «простой, но бессмысленный». Есть ситуации, когда его можно и нужно использовать.

1. Если ваши доходы и расходы за период никак не связаны между собой.
Один пример, который я могу привести: разработка и продажа программного обеспечения (ПО). Лицензии, проданные за прошедший месяц напрямую не связаны с зарплатой программистов. И в этом смысле момент передачи прав на лицензию клиенту ничем не отличается от момента оплаты этой лицензии. Поэтому «эффективность» разработческой компании в целом посчитать сложно.

2. Если на границах периодов размер запасов и задолженностей остается постоянным.
В частности нулевым . Т.е. если к концу периода вы никому не должны (нулевая «кредиторка»), вам никто не должен (нулевая «дебиторка») и запасов у вас нет, то можете смело считать прибыль кассовым методом. Результат будет тот же, что и при методе начислений, только считать проще. Еще раз повторю - размеры запасов и задолженностей нулевые или те же, что и на начало периода .

Даже по российскому законодательству для малых предприятий - т.е. для тех, чей годовой оборот не превышает 1 миллиона рублей, разрешается вести учет прибыли кассовым методом. Это сделано потому, что считается, что у таких предприятий изменение запасов и задолженностей от периода к периоду - незначительное . И им можно пренебречь при расчете.

Когда следует использовать метод начислений?

Ну собственной, те же два пункта, только наоборот.

1. Если у вас прослеживается четкая взаимосвязь между доходами и расходами.

2. Если у вас имеется в наличии дебиторская и/или кредиторская задолженности и они постоянно меняются. А так же если у вас есть складские запасы и их объем на границах периодов так же не постоянен.

В этих случаях имеет смысл применять метод начисления потому, что:

1. Отношение связанных доходов и расходов могут показать вам эффективность работы вашего предприятия за каждый конкретный период. И их можно и нужно сравнивать.

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

Какой метод использовать в ресторанах?

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

Кассовый метод вы можете применять, если вы - «бабка с пирожками», или если вам не интересна ваша прибыль и эффективность, а важен только остаток в кассе (тоже вполне себе реальный вариант).

Некоторые заблуждения

Есть еще несколько заблуждений, которые бытуют при использовании «метода начислений» , и которые было бы полезно развеять. Итак:

1. Полученная предоплата за банкет - это не доход.

2. Полученная оплата за услугу, оказанную в кредит - это не доход.

3. Принятые на склад продукты от поставщика - это не доход.

4. Оплата поставщику - это не расход.

5. Предоплата аренды - это не расход.

6. Остаток в кассе - это не прибыль.