Описание тега least-astonishment

Не удивляйте программиста тем, что он ведет себя / работает не так, как ожидалось.
1 ответ

Странно рубиновое поведение

Мне нужно проверить, является ли переменная массивом, и если нет, преобразовать ее в единицу, прежде чем приступить к дальнейшей обработке. Итак, мой код выглядит так: class Test < Struct.new(:args) def eval p "1. #{args}" args = (args.instance_o…
17 авг '11 в 08:43
1 ответ

Каковы последствия использования непостоянных типов в качестве аргументов по умолчанию в Python?

Возможные дубликаты: Почему синтаксис "изменяемый аргумент по умолчанию изменчив" так ужасен, спрашивает новичка Python Наименьшее удивление в Python: изменяемый аргумент по умолчанию Вот пример. def list_as_default(arg = []): pass
15 окт '10 в 21:20
38 ответов

"Наименьшее удивление" и изменчивый аргумент по умолчанию

Любой, кто возился с Python достаточно долго, был укушен (или разорван на части) следующей проблемой: def foo(a=[]): a.append(5) return a Новички в Python ожидают, что эта функция всегда будет возвращать список только с одним элементом: [5], Результ…
5 ответов

"Булевы" операции в Python (т.е. операторы and и / или)

Этот метод ищет первую группу символов слова (то есть: [a-zA-Z0-9_]), возвращая первую подобранную группу или None в случае неудачи. def test(str): m = re.search(r'(\w+)', str) if m: return m.group(1) return None Эту же функцию можно переписать так:…
1 ответ

Значения функций по умолчанию в многоуровневой архитектуре

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

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

У меня есть процедура, которая может извлечь элементы из фрейма данных на основе списка условий в столбцах (см. Извлечение элементов из фрейма данных R с использованием критериев, заданных в виде списка (column_name = value)): Вот фрейм данных и спи…
29 ноя '16 в 13:56
0 ответов

Поведение изменяемого и неизменяемого объекта в функциях Python

Две части кода ниже дают разные результаты. def f1(x= []): x.append(1) return x print(f1()) print(f1()) Выход: [1] [1, 1] И для второй функции: def f2(x=0): x+=1 return x print(f2()) print(f2()) Выход: 1 1 Теперь я знаю, что это потому, что "1" имее…
1 ответ

Не следует ли использовать FieldInfo.SetValue, чтобы установить для ValueType значение NULL?

(относится к PropertyInfo SetValue и нулям) Если у меня есть public class Thing { public int X; }, Thing oи FieldInfo fi это указывает на X поле, почему это законно называть fi.SetValue(o, null)? Среда выполнения устанавливает поле X в ноль, т.е. de…
25 авг '10 в 06:21
4 ответа

В Ruby, как включить переменную, содержащую объект класса?

Если я напишу это: case v when String puts :String else puts :other end Если я установлю v в "some string" Я получаю "String". Если я установлю v в StringЯ получаю "другое". Как я должен "переключаться" на переменную, содержащую один из нескольких о…
3 ответа

Почему отрицательный идентификатор или ноль считается плохой практикой?

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

Периодические даты на даты, которые не существуют

Когда я даю возможность что-то повторять каждый определенный промежуток времени, как мне относиться к временам, которые не повторяются на каждом интервале? Например, что должно произойти с напоминаниями о дне рождения на 29 февраля? Или, если у меня…
21 июн '09 в 18:53
2 ответа

Причина разрешения специальных символов в атрибутах Python

Я случайно обнаружил, что вы можете установить "незаконные" атрибуты для объекта, используя setattr, Под незаконным я подразумеваю атрибуты с именами, которые нельзя получить с помощью __getattr__ интерфейс с традиционным . Операторские ссылки. Их м…
08 июл '16 в 18:54
1 ответ

Должен ли я дать бобам другое имя, отличное от класса?

Должен ли я дать бобам новое имя в @Named аннотации, или я должен использовать то же самое, что и класс для удобства чтения? Есть ли какие-либо рекомендации относительно того, когда этого не делать или когда это делать? У меня есть компонент поддерж…
1 ответ

Возвращение `self` в методе класса ActiveRecord теряет косвенную ссылку

При определении метода класса в ActiveRecord, если я вернусь self, косвенная ссылка теряется. Я не уверен, что использую правильный словарный запас, так как я только изучаю Ruby on Rails, поэтому вот пример: class User < ActiveRecord::Base has_ma…
1 ответ

Инициализаторы коллекций внутри инициализаторов объектов со значениями по умолчанию

Я только что наткнулся на следующую проблему: class Settings { // Let's set some default value: { 1 } public ICollection<int> AllowedIds = new List<int>() { 1 }; } static void Main(string[] args) { var s = new Settings { AllowedIds = { 1…
2 ответа

Заставить ++o++ жаловаться на типы с определяемыми пользователем пре- и постфиксными операторами приращения

Я ищу способ предотвратить ++x++ от работы с типами с определяемыми пользователем префиксными и постфиксными операторами приращения. Для встроенных типов тип результата постфиксного оператора - это не lvalue, а выражение prvalue, и компиляторы хорош…
24 мар '21 в 23:43
0 ответов

«Никогда не изменяйте и не удаляйте работу пользователя без его ведома» — как называется этот принцип проектирования программного обеспечения?

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