Я думаю, что необходимо знать, варьируется в зависимости от типа приложения, которое Вы пытаетесь разработать и пользовательская среда, в которой это будет.
С огромной точки зрения компании/продукта - мудро иметь Руководство по стилю HMI/UI, которое обстоятельно объясняет основных разработчиков предписаний, должен использовать их дизайны интерфейса для определенных целей их программного обеспечения. Во многих случаях столь же важно быть последовательным, как это должно быть корректно, также - единственное руководство для большого продукта, или комплект продуктов становится действительно важным. Это также сохраняет экспертов по программному обеспечению от также необходимости быть пользовательскими экспертами. Если бы существует всего один источник, я сказал бы, что внутреннее руководство по стилю было бы им. Идеально, они должны быть записаны (и обновлены) сделать точно, что Вы спрашиваете - контрольная точка всех вещей рассмотреть при создании дизайна.
я не уверен, что Вы будете когда-либо находить единственное руководство для весь аспекты дизайна пользовательского интерфейса, который является единым источником. Различные типы технологии требуют различных методов - например, эти две дизайнерских идеи выше полезны для двух совсем других типов приложений (передачи речи и видеоигры). И никакой не особенно полезен для веб-приложений. Хуже все же, пользовательское изменение потребностей, поскольку данная технология становится более широко принятой - например, графический интерфейсы пользователя Web 2.0 используют некоторые разметки и концепции проекта, которые нарушают более старые ранние веб-методы дизайна UI.
Общие принципы, которые я нахожу полезными для моей работы в мире веб-приложения:
К сожалению, пробег может варьироваться - я всегда работал в мире приложений, которые люди должны использовать, но охотно никогда не использовали бы, если бы они не должны были делать своих работ - надо надеяться, инструмент делает работу легче, но это - все еще работа. Вещами как видеоигры - который люди охотно платят деньги только для забавы использовать их - является совершенно другая игра с мячом. В тех случаях Вы не можете пытаться сделать все легким - кроме Вас, пытаются добавить проблему способом, которая приятна.
* (Редактирование - Добавленный) - когда возможный и , когда это имеет смысл. Не бойтесь изобрести велосипед, когда у Вас есть лучшая идея, пока у Вас есть хороший случай для нее действительно быть лучше.
Это не имеет ничего общего со структурами - массивы в C не назначаются:
char a[20];
a = "foo"; // error
вам необходимо используйте strcpy:
strcpy( a, "foo" );
или в своем коде:
strcpy( sara.first, "Sara" );
используйте strncpy
, чтобы убедиться, что у вас нет переполнения буфера.
char name[]= "whatever_you_want";
strncpy( sara.first, name, sizeof(sara.first)-1 );
sara.first[sizeof(sara.first)-1] = 0;
Вы также можете инициализировать его следующим образом:
struct name sara = { "Sara", "Black" };
Поскольку (как особый случай) вам разрешено инициализировать массивы символов из строковых констант.
Теперь , что касается того, что на самом деле представляет собой структура - это составной тип, состоящий из других значений. То, что sara
на самом деле выглядит в памяти, представляет собой блок из 20 последовательных значений char (на которые можно ссылаться, используя sara.first
, за которым следует 0 или более байтов заполнения, за которыми следует другой блок из 20 последовательных значений char (на которые можно ссылаться с помощью sara.last
). Все другие экземпляры типа имя структуры
расположены таким же образом.
В этом случае очень маловероятно, что есть какое-либо заполнение, поэтому имя структуры
представляет собой всего лишь блок из 40 символов,
sara
- это сама структура, а не указатель (т.е. переменная, представляющая местоположение в стеке, где хранятся фактические данные структуры ). Следовательно, * sara
не имеет смысла и не компилируется.
Структура Sara - это блок памяти, содержащий переменные внутри. Практически нет разницы между классическими объявлениями:
char first[20];
int age;
и структурой:
struct Person{
char first[20];
int age;
};
В обоих случаях вы просто выделяете некоторую память для хранения переменных, и в обоих случаях будет зарезервировано 20 + 4 байта. В вашем случае Сара - это просто блок памяти размером 2x20 байт.
Единственное отличие состоит в том, что в структуре память выделяется как единый блок, поэтому, если вы возьмете начальный адрес Sara и перескочите на 20 байтов, вы найдете «последнюю» переменную. Иногда это может быть полезно.
Подробнее см. http://publications.gbdirect.co.uk/c_book/chapter6/structures.html :).