Использование языковой модели ChatGPT для облегчения написания кода с четкой целью

Если вы знаете, что хотите построить, ChatGPT может помочь вам в этом и написать для вас исходный код. Как разработчик, вы должны работать над пользовательскими историями (пользовательские истории — это неформальное описание функций программной системы на естественном языке). Когда у вас есть пользовательская история с критериями приемки. Позвольте мне объяснить, как вы можете использовать свои критерии приемки, чтобы начать работу.

Примечание. Я попробовал очень простой пример, но он хорошо работает и со сложными требованиями. Вам нужно его затормозить.

Пример: создание регистрации пользователя

Критерии приемлемости:

Как пользователь я могу зарегистрироваться, используя адрес электронной почты и пароль на странице регистрации.

Как пользователь, я должен увидеть сообщение об ошибке, если мой адрес электронной почты недействителен.

Как пользователю мне нужно добавить как минимум 8-символьный пароль.

Как пользователю мне нужно добавить пароль с комбинацией алфавита, цифры и специального символа.

Как пользователь, я должен увидеть сообщение об ошибке, если идентификатор электронной почты уже существует.

Это то, что я запросил ChatGPT

создайте внутренний код регистрации пользователя в javascript, который принимает электронную почту и пароль со следующей проверкой: Электронная почта должна быть действительным адресом электронной почты Уже существующая электронная почта не должна регистрироваться снова. Пароль должен иметь длину не менее 8 символов. Пароль должен содержать буквы, цифры и специальные символы. Отправлять событие kafka после успешной регистрации из службы аутентификации в другие микросервисы в теме «userRegistration».

Я добавил kafka как часть ввода, поскольку в основном мы используем микросервисы, и иногда нам нужно публиковать данные в других сервисах.

Вот что создал ChatGPT:

const kafka = require('kafka-node'); // You will need to install this package using npm or yarn

// Setup Kafka client and producer
const client = new kafka.KafkaClient({ kafkaHost: 'localhost:9092' });
const producer = new kafka.Producer(client);

producer.on('ready', function () {
  console.log('Kafka producer is ready');
});

producer.on('error', function (err) {
  console.error('Error in Kafka producer:', err);
});

// Dummy database to store registered users
const users = [];

// Register user function
function registerUser(email, password) {
  // Check if email is already registered
  const isEmailRegistered = users.some(user => user.email === email);

  if (isEmailRegistered) {
    return { success: false, message: 'Email already registered' };
  }

  // Validate email
  const isValidEmail = /\S+@\S+\.\S+/.test(email);

  if (!isValidEmail) {
    return { success: false, message: 'Invalid email address' };
  }

  // Validate password
  const hasValidPassword = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W]).{8,}$/.test(password);

  if (!hasValidPassword) {
    return { success: false, message: 'Invalid password. Password must contain at least 8 characters, including at least one letter, one number, and one special character' };
  }

  // If all validations pass, register the user
  const newUser = { email, password };
  users.push(newUser);

  // Send Kafka event to notify other services
  const payload = [{
    topic: 'userRegistration',
    messages: JSON.stringify(newUser)
  }];

  producer.send(payload, function (err, data) {
    if (err) {
      console.error('Error sending Kafka event:', err);
    } else {
      console.log('Kafka event sent:', data);
    }
  });

  return { success: true, message: 'User registered successfully' };
}

// Example usage
const registrationResult = registerUser('[email protected]', 'Password1!');

console.log(registrationResult);

Справедливо! Не так ли? :)

Чтобы извлечь максимальную пользу из ChatGPT, вам необходимо иметь в виду четкую цель. Создаете ли вы новое приложение или отлаживаете существующее, вы должны знать, чего хотите достичь с помощью своего кода. Как только у вас появится четкая цель, вы сможете сообщить ChatGPT о своих требованиях на естественном языке, и он сможет оказать вам необходимую помощь.

Я попросил ChatGPT сделать приведенный выше код более удобным и функциональным.

Вы можете написать код, основанный на принципе SOLID, а также сделать сервис, контроллер и уровень модели. пожалуйста, сделайте функциональное программирование

Он создал модель, сервис и контроллер следующим образом:

Модель пользователя

const User = (function () {
  const User = {};

  User.create = ({ email, password }) => ({
    email,
    password,
  });

  return User;
})();

module.exports = User;

Обслуживание пользователей

const User = require("./user");

const UserService = (function () {
  const UserService = {};

  const users = [];

  UserService.register = (userData) => {
    const user = User.create(userData);
    users.push(user);
    return user;
  };

  UserService.getByEmail = (email) =>
    users.find((user) => user.email === email);

  return UserService;
})();

module.exports = UserService;

Контроллер пользователей

const UserService = require("./user-service");

const UserController = (function () {
  const UserController = {};

  UserController.register = (req, res) => {
    const { email, password } = req.body;

    if (!email || !password) {
      res.status(400).send("Email and password are required");
    } else if (UserService.getByEmail(email)) {
      res.status(400).send("Email already registered");
    } else {
      const user = UserService.register({ email, password });
      res.status(201).send(user);
    }
  };

  return UserController;
})();

module.exports = UserController;

Он пропустил контекст части кафки, но все в порядке. Я не просил его добавить это.

Теперь я хотел попробовать создать схему пользователя на основе следующих входных данных:

можете ли вы определить схему пользователя в monodb, которая имеет имя, адрес электронной почты, пароль в качестве ключей, и все они не пустые или не нулевые. добавьте post hook, чтобы возвращать адрес пользователя из схемы адресов, которая включает город, штат и страну

onst mongoose = require('mongoose');

// Define the Address schema
const AddressSchema = new mongoose.Schema({
  city: { type: String, required: true },
  state: { type: String, required: true },
  country: { type: String, required: true }
});

// Define the User schema
const UserSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  address: {
    type: AddressSchema,
    default: { city: '', state: '', country: '' }
  }
});

// Add a post hook to return the user's address
UserSchema.post('findOne', async function (doc) {
  if (!doc) return;
  await doc.populate('address').execPopulate();
});

const User = mongoose.model('User', UserSchema);

module.exports = User;

Он также знает о post hooks :P

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

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

Однако важно отметить, что ChatGPT не заменяет разработчиков-людей. Это просто инструмент, который может помочь вам в ваших усилиях по кодированию. Хотя ChatGPT может дать вам рекомендации по написанию кода, вы должны реализовать эти предложения и принять окончательное решение о том, как действовать дальше.

Расширение ChatGPT для VSCode

Это расширение Visual Studio Code позволяет вам использовать неофициальный API ChatGPT для создания ответов на естественном языке из ChatGPT OpenAI на ваши вопросы прямо в редакторе.



Следите за мной в: LinkedIn. Твиттер.

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