Наказание указателя небезопасно. Вместо этого используйте настоящий союзный удар.
Допущения: структура правильно упакована (нет заполнения между элементами)
#include
#include
struct __attribute__((packed)) result{
int a;
int b;
int c;
int d;
};
union convert{
int arr[4];
struct result res;
};
volatile int arr1[4];
void foo(void)
{
union convert cnv;
memcpy(&cnv, (void *)arr1, sizeof(arr1));
printf("%d %d\n", cnv.res.a, cnv.res.b);
}
все современные компиляторы оптимизируют вызов memcpy
https : //godbolt.org/z/4qtRIF
.LC0:
.string "%d %d\n"
foo:
mov rsi, QWORD PTR arr1[rip]
xor eax, eax
mov rdi, QWORD PTR arr1[rip+8]
mov edi, OFFSET FLAT:.LC0
mov rdx, rsi
sar rdx, 32
jmp printf
Я предпочитаю CRUD по AGUD и AFUD.
СОЗДАЙТЕ по сравнению с ADD
Мы пытаемся использовать оба из этих слов, чтобы указать, что мы создаем что-то новое. СОЗДАЙТЕ не оставляет комнаты для интерпретации; что-то, что не существовало прежде, теперь создается. ADD может немного сбивать с толку, потому что он мог подразумевать, что мы добавляем что-то, что уже существует.
ЧИТАЙТЕ по сравнению с, получают/ВЫБИРАЮТ
Мне проблема с ПОЛУЧАЕТ и ВЫБИРАЕТ, здесь мог межпустословиться как приведение в порядок единственного экземпляра объекта изменить его. Мне нравится использовать, ЧИТАЕТ, потому что это ясно в том смысле, что я хочу читать в экземпляре объекта и что изменение изменения объекта потребовало бы отдельного действия.
Я думаю, что это зависит от контекста проблемы/технологии - СОЗДАЮТ, и ADD может отличаться.
Например, я могу СОЗДАТЬ тег.
И затем я могу ADD, которые отмечают к странице.
Мы используем Репозитории для управления нашим доступом к данным, и по словам Eric Evans в его Доменной Управляемой книге Дизайна Вы должны Add & Remove возражать против репозитория, как будто это - набор в оперативной памяти - даже если негласно это использует DB.
Но в ответе на исходный вопрос я все еще говорю о CRUD, потому что я - фанат SQL в глубине души!:)
ХЛЕБ - обзор, считайте, отредактируйте, добавьте, удалите.
CRUD работает лучше акронимом. На практике я обычно использую IACREUD:
Я не могу действительно думать о хорошем акрониме для этого..
Я думаю, что это довольно распространено. Наши ДАО, конечно, имеют Добавление, Получают, Обновление, Удаляют (состояние набора к 'C'ancelled, и т.д.) имена методов. На уровне DB они - Вставки, Выбирает, Обновления и Удаляет - ISUD.
Это могло быть, Сохраняют, Выборка, Удаляют. Сохраните или Добавление или Обновление по мере необходимости.
Я Создаю что-то и затем добавляю его к чему-то еще. Добавление может быть частью создавания или иногда Обновления содержания объекта.
Обычно, "Доберитесь" для высокого уровня - получают его от везде, где: кэш, диск, конфигурация. "Получите" получает значение от персистентного устройства хранения данных - обычно названный "Получением", если это не находится в кэше.
Я пытаюсь использовать более определенные глаголы, когда я могу думать о соответствующих (который довольно тверд в 4:00). Поскольку большинство вещей добавляет/редактирует/удаляет/получает, достаточно хороши, и достаточно коротки.
Следующие ссылки предоставить полезную информацию о WSDL и REST, включая плюсы и минусы
Пара ключевых моментов состоит в том, что
1) SOAP был разработан для распределенной вычислительной среды, тогда как REST был разработан для среды точка-точка.
2 ) WADL можно использовать для определения интерфейса для служб REST.
http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest
http: // ajaxonomy.com/2008/xml/web-services-part-2-wsdl-and-wadl
это зависит от предпочтений и стандартов компании. Обычно это не зависит от меня, и это меня устраивает. хороший программист гибок.
В конце концов, все зависит от вас как личности, и это то, чем вы довольны в своем проекте. Я обычно использую Get, Add, Search или что-то подобное. С уважением Марка
Вы пишете createSomething () или addSomething ()?
Я использую createThing (), когда чего-то не существует, и addThing (), если что-то существует , и мы добавим к нему что-то другое.
Вы напишите readSomething (), getSomething () или fetchSomething ()?
Я бы использовал readThing (), если я читал байты (или аналогичные), getThing (), если я обращаюсь к свойству, и fetchThing (), если я обращаюсь к внешнему источнику .
Зависит от контекста и предпочтений. LSS, Создание чего-то определенно отличается от Добавление чего-то. Лично я считаю, что они не взаимозаменяемы.