определение типа станд.:: строка - Лучшая практика

В ваш html-ввод типа «file» вы можете добавить атрибут «accept» для ограничения типа файла только изображениями: https://developer.mozilla.org/fr/docs/Web/HTML/Element/ Вход / файл

5
задан Navaneeth K N 1 January 2009 в 03:15
поделиться

5 ответов

Можно записать шаблонные функции, которые будут работать или с типом строки или в этом отношении с чем-либо, что имеет правильные методы.

Если Вы сделаете определение типа, как Вы предполагаете, необходимо будет изменить весь код в будущем при изменении определения типа. Я рекомендовал бы против него.

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

Существует значение в придерживании стандартных типов, которые все знают и понимают.

5
ответ дан 14 December 2019 в 04:49
поделиться

Я думаю typedeffing станд.:: строка разумна. Вы все еще связываетесь с интерфейсом все же. Если Вы когда-нибудь переключаетесь на строковую реализацию с несовместимым интерфейсом, можно изменить значение определения типа к некоторому классу адаптера. В C++ можно сделать это с минимальным ни к каким издержкам. Изменение на новый строковый тип затем подразумевает изменение класса адаптера. При нахождении адаптера часто, Вы могли бы установить его как шаблон.

Вы все еще не неуязвимы однако от других (или Вы в более позднее время) упущение об определении типа и использовании станд.:: представьте в виде строки непосредственно.

2
ответ дан 14 December 2019 в 04:49
поделиться

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

Определение типа или выделенный класс являются оба способами выполнить это.

Используя определение типа хорошее начало: код полагается на абстракцию. Вещь: Ваш клиентский код может использовать что-либо a std::string предложения, поэтому если Вы хотите мигрировать позже, необходимо будет проанализировать постакт, какие аспекты необходимы (если Вы не хотите подражать целому std::string).

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

Так: знайте свои потребности и решите.

1
ответ дан 14 December 2019 в 04:49
поделиться

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

Определение типа хорошо работало бы для переключения от строки до wstring, но переключение на строковый класс с другим интерфейсом не будет очень легко (т.е. qstring).

0
ответ дан 14 December 2019 в 04:49
поделиться

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

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

0
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

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