Поспешите к общим и не обращайте внимания на детали!

В прошлом году я хотел понять, что определяет хорошее программное обеспечение. Я разработал инструмент, который поможет добиться беспрепятственного набора кадров в кампусе. В ходе курса я узнал о важности статического анализа кода, подхода к проектированию, контроля версий, реализации безопасности и, конечно же, ценности модульных тестов. Я долго учился, пока работал над этим. Я поделился своими знаниями в статье Давайте начнем отвечать -« С чего начать? »

В этом году я хотел выучить язык программирования Golang. Как вы видели, я всегда предпочитал изучать любой язык или технологию, работая над проектом; вместо того, чтобы просто реализовать несколько простых примеров программ из руководств.

Пока я думал о проекте по изучению и изучению Golang, мне очень хотелось разработать SDK (Software Development Toolkit) для API-интерфейсов Composable Fabric Manager от Hewlett Packard Enterprise (разработка которых является моим постоянным проектом в HPE).

Однако, прежде чем начать, я хотел убедить себя, что разработка SDK для API будет хорошим проектом. Я спросил: «Почему SDK и в чем его преимущества?» и «Если этот проект, который я собираюсь начать, примет хорошую форму, то куда он пойдет?» Я поговорил со своими наставниками и нашел несколько убедительных ответов, которыми хотел бы поделиться, прежде чем продолжить.

Почему SDK?

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

  • API может обмениваться данными между одним клиентом и одним экземпляром приложения. С помощью SDK вы можете масштабировать этот предел.
  • Разработчикам не нужно беспокоиться о создании полезной нагрузки JSON в правильном формате и заботиться о конечных точках с параметрами. Все, что им нужно сделать, это отправить необходимые параметры, а SDK позаботится обо всем остальном.
  • SDK также добавляет в ваше приложение еще один уровень безопасности.
  • SDK также обеспечит поддержку и гибкость для разработчиков при разработке своих программных пакетов на языке программирования, на котором они уже построили свою экосистему. (Вы могли заметить, что SDK для приложения будет предлагаться на нескольких языках программирования - Python SDK, PowerShell SDK, Java SDK, а также Golang SDK!)

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

  • Голанг - это компилируемый язык. Это действительно быстро.
  • Golang в основном создавался для того, чтобы писать меньше кода и добиваться большего. Что он выполняет.
  • Это преимущественно функциональный язык программирования. Однако в нем есть объектно-ориентированный подход.
  • Golang имеет хорошую поддержку для разработки веб-приложений, API и т. Д.
  • В Golang нет исключений, утверждений, которые поначалу могут показаться немного странными, если они используются для кодирования с помощью таких языков программирования, как Python, Java или C #.

В целом, я не удивлюсь, если любитель Python полюбит Голанг!

Изучив основы и несколько продвинутых концепций, я начал работать над дизайном своего SDK (я назвал этот проект как Project Private Elevator). Должен сказать, это потребовало много мыслительного процесса и повторений. Наконец, я смог придумать красивый дизайн. Я приступил к реализации. Вот несколько вещей, которые следует учитывать при разработке SDK для API:

  • SDK должен имитировать API. Таким образом, файлы ресурсов в SDK должны реализовывать функции, соответствующие конечным точкам, которые определяет API. Например, если у нас есть конечная точка API для операций CRUD (CRUD - создание, чтение, обновление и удаление. Очень часто используется в терминологии REST API), скажем, / rest / v1 / users , тогда в SDK должен быть такой метод, как AddUser (newUser), GetUsers (), UpdateUser (userUUID, updatedUserInfo) и DeleteUser (userUUID). Соглашение об именах должно быть интуитивно понятным.
  • Необходимо соблюдать стандарт для сопоставления ресурсов API и их атрибутов с ресурсами и их атрибутами в SDK.
  • И обязательно в SDK должна быть документация. Чтение документации API или SDK должно помочь вам понять, как работает API. Любые ограничения должны быть четко указаны.
  • В SDK также должен быть реализован хороший механизм обработки ошибок, ведение журнала ошибок и сообщения об ошибках. Журнал не должен регистрировать какую-либо конфиденциальную информацию.
  • Начните создавать набор модульных тестов одновременно. Хотя в большинстве случаев проще реализовать только функциональное тестирование. Иногда это не так. И это нормально. В этом случае продолжайте тестирование системы реализации, и это вполне приемлемо.

Теперь, когда все это сделано, я уверен, что смогу провести демонстрацию своего Golang SDK для HPE CFM API для моей команды и руководителей продуктов в HPE.

Если они это оценят, я с нетерпением жду, когда этот проект будет рассмотрен Советом по обзору открытого исходного кода в HPE и сделать его проектом с открытым исходным кодом. Таким образом, я выполняю еще одно желание поддержать проект с открытым исходным кодом. Если этот проект станет открытым исходным кодом, мне, возможно, придется поработать над определением руководящих принципов участия, тестовых фреймворков, проверки сборки и даже настройки конвейера CI / CD с использованием Travis CI или Jenkins или действий GitHub или чего-то еще. Это снова будет адским уроком! Ура!

Когда я начал это, я понятия не имел, что делать и как делать. Я просто снова придерживался того, что говорит Джон Кейдж -

«Самый распространенный паралич среди людей - это неуверенность в том, с чего начать. Мой совет - начинайте с чего угодно! »

Угадай, что? Это работает! И когда вы начнете, вы найдете некоторых удивительных людей (в том числе другого себя), которые помогут вам ускорить процесс быстрее, чем вы представляли.

Вся эта статья оставляет нам только один вопрос: «Выполнилась ли моя цель для начала этого проекта, Частный лифт?" И ответ - «Да». Теперь мне комфортно принимать задание в Голанге и создавать с его помощью крутые штуки. Вот и еще один!

С уважением и уважением,
Тедди Винтерс (он же Самарт Деягонд)

Еще статьи от автора -