Действительно ли это - плохая практика, чтобы иметь несколько классов в том же файле?

Невозможно, что вы просите.

Два решения: (1) изменить Android-источник и добавить новые методы в CameraManager (и другие методы в других компонентах) (2) использовать Xposed Framework (для этого требуются Root Permissions) и создайте модуль, который прослушивает события openCamera () и сохранит вызывающее имя PackageName для последующего использования, когда вам захочется узнать, кто был последним вызывающим.

62
задан Yufenyuy Veyeh Dider 3 February 2018 в 23:16
поделиться

13 ответов

Я думаю, что необходимо попытаться сохранить код к 1 классу на файл.

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

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

76
ответ дан Zac B 24 November 2019 в 16:35
поделиться

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

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

1
ответ дан Robin 24 November 2019 в 16:35
поделиться

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

, Например, какова когезионная способность рассматриваемых классов? Они сильно связываются? Действительно ли они являются абсолютно ортогональными? Они связаны в функциональности?

Это не было бы исключительным для веб-платформы для предоставления общей цели widgets.whatever файл, содержащий BaseWidget, TextWidget, CharWidget, и т.д.

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

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

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

2
ответ дан Wayne Werner 24 November 2019 в 16:35
поделиться

Как показывает опыт, один файл класса/одного является способом пойти. Я часто сохраняю несколько интерфейсных определений в одном файле, все же. Несколько классов в одном файле? Только если они очень тесно связаны так или иначе и очень маленькие (< 5 методов и участники)

2
ответ дан Treb 24 November 2019 в 16:35
поделиться

[только 114] время я полагаю, что расположение файлов - когда я должен создать новые классы. Иначе я никогда не перешел файловой структурой. Я Использование "переходит к классу" или, "перехожу к определению".

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

, Если это чувствует себя хорошо, чтобы поместить их в тот же файл, быть моим гостем. Наклон делает это с общедоступными классами в Java хотя;)

5
ответ дан krosenvold 24 November 2019 в 16:35
поделиться

Это может быть плохо с точки зрения будущей разработки и пригодности для обслуживания. Намного легче помнить, где Автомобильный класс - то, если у Вас есть класс Car.cs. Где Вы искали бы класс Виджета, если Widget.cs не существует? Действительно ли это - автомобильный виджет? Действительно ли это - виджет механизма? О, возможно, это - виджет рогалика.

6
ответ дан Steven Behnke 24 November 2019 в 16:35
поделиться

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

7
ответ дан Jim Anderson 24 November 2019 в 16:35
поделиться

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

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

9
ответ дан Daniel Schaffer 24 November 2019 в 16:35
поделиться

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

public class Customer { /* whatever */ }

public class CustomerCollection : List<Customer> { /* whatever */ }

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

18
ответ дан Ryan Lundy 24 November 2019 в 16:35
поделиться

В Java один общественность класс на файл является способом, которым работает язык. Группа файлов Java может быть собрана в пакет.

В Python, однако, файлы являются "модулями", и обычно имеют много тесно связанных классов. Пакет Python является каталогом, точно так же, как пакет Java.

Это дает Python дополнительный уровень группировки между классом и пакетом.

нет никакого правильного ответа, который является агностиком языка. Это меняется в зависимости от языка.

25
ответ дан S.Lott 24 November 2019 в 16:35
поделиться

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

6
ответ дан Boojum 24 November 2019 в 16:35
поделиться

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

13
ответ дан 24 November 2019 в 16:35
поделиться

Ответ SmallTalk: у вас не должно быть файлов (для программирования). Они делают версию и навигацию болезненным.

1
ответ дан 24 November 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: