Когда использовать CSS и отступы в CSS [закрыто]

Посмотрите на exiftool.exe. Это бесплатно. Это стандарт для такого рода вещей, но вам нужно будет выложить.

2230
задан Alex Angas 3 February 2010 в 03:20
поделиться

4 ответа

Разбейте тесты на два совершенно разных типа.

  • Испытания модели. Поместите их в файл models.py с моделью. Эти тесты будут выполнять методы в классах модели. Можно выполнить простое CRUD (Создать, Извлечь, Обновить, Удалить), чтобы просто доказать, что модель работает. Не проверяйте каждый атрибут. Проверьте значения полей по умолчанию и сохраните () правила, если вам интересно.

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

  • Тесты пользовательского интерфейса. Поместите их в отдельный файл tests.py . В ходе этих тестов будут проверены функции просмотра и шаблоны.

    • Назовите Test Case «условием», которое вы создаете. «Test NotNotIn». «TexIntegrationIn». «StartNoValidThis». «StartNotAllowedToDoThat». Ваш setUp выполнит вход в систему и другие действия, необходимые для установки требуемого условия.

    • Присвойте каждому методу тестирования имя с указанием действия и результата. «test_get_noquery_should_list,» «test_post_should_validate_with_errors,» «test_get_query_should_detail.»

-121--1395144-

Можно использовать 2 ExecutionServices, отправить реализацию Callable в службу A, которая знает о последующих действиях в службе B. После завершения работы Callable отправляет в службу B новую задачу, которая делает что-то дополнительное с результатами.

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

API-интерфейс службы ExecutingService довольно прост, по большей части вы, вероятно, будете использовать что-то вроде .newFixedThreadPool (int threads) и отправлять в него Runnables/Callables.

-121--1415197-

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

18
ответ дан 22 November 2019 в 19:55
поделиться

Я бы сказал так: какой язык ассоциируется с рядом алфавитов - это просто соглашение. Люди, разработавшие Objective-C, решили, что

[x doSomething];

означает «отправка сообщения doSomething объекту , указанному x». Они определили это так, вы следуете правилу:) Одна особенность Objective-C, по сравнению, например, с C++, заключается в том, что он не имеет синтаксиса для хранения самого объекта, а не указателя на объект. Итак,

NSString* string;

- это нормально, но

NSString string;

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

Итак, если бы дизайнеры Objective-C следовали вашей логике, вам пришлось бы писать

[*x doSomething];

каждый раз, когда вы отправляете сообщение... Видите ли, * должен всегда появляться после ведущей скобки [, образуя комбинацию [* . На этом этапе я считаю, что вы согласны с тем, что лучше переработать язык так, чтобы вам пришлось писать только [ вместо [* , изменив значение последовательности букв [x doSomething] .

-121--1080965-

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

С другой стороны, может ли ВО быть композицией и способами контейнера данных (DTO?); означает, что БО являются чистыми функциональными α Это может избежать всех преобразований между BO и DTO.

-121--2917487-

Поле находится снаружи элементов блока, а набивка - внутри.

  • Используйте поле, чтобы отделить блок от внешних объектов
  • Используйте набивку, чтобы переместить содержимое от краев блока.

enter image description here

1461
ответ дан 22 November 2019 в 19:55
поделиться

Что касается полей, то вам не нужно беспокоиться о ширине элемента.

Например, когда вы указываете что-то {padding: 10px;} , вам придется уменьшить ширину элемента на 20 пикселей , чтобы сохранить размер по размеру ] 'и не беспокоить другие элементы вокруг него.

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

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

31
ответ дан 22 November 2019 в 19:55
поделиться

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

 $ (". Внешний"). Click (функция (e) {console.log ("внешний"); e.stopPropagation ();}); $ (". inner"). click (function (e) {console.log ("inner"); e.stopPropagation ();}); 
 .outer {padding: 10px; фон: красный; } .inner {маржа: 10 пикселей; отступ: 10 пикселей; фон: синий; граница: сплошной белый 1px; } 
  
33
ответ дан 22 November 2019 в 19:55
поделиться
Другие вопросы по тегам:

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