我请 ChatGPT 重构 Forem StoriesController。
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
Forem代码库为 DEV 和其他网络提供支持,它是开源的,因此非常适合用于演示目的。
重写现有代码或重构是ChatGPT的一个非常有趣的用例,而聊天界面可能是利用这种潜力的最简洁的方式,同时还能对过程保持一些常识性的控制。
以下是我的结果:
迅速的
重构这个 Ruby on Rails 控制器:(
代码来自此处)
回答
这个控制器可以进行重构,使其更易读、更易维护。以下是一些建议:
-
将常量提取
DEFAULT_HOME_FEED_ATTRIBUTES_FOR_SERIALIZATION到它自己的类或模块中,使其不在 `<controller>` 标签内定义StoriesController。这将使控制器更易于阅读和理解,并允许在应用程序的其他部分轻松重用该常量。 -
使用
before_action回调函数来设置@page实例变量,而不是在index操作中定义它。这样可以使index操作更易于阅读和理解,并避免在多个操作中重复编写相同的代码。 -
handle_user_or_organization_or_podcast_or_page_index将 ` and`方法提取handle_base_index到各自的私有方法中,这样index可以避免操作代码过于冗杂。这将使操作index更易于阅读和理解,并允许代码在控制器的其他部分更轻松地重用。 -
assign_hero_html将` __init__`get_latest_campaign_articles、`__init__` 和 `__init__`方法提取redirect_to_changed_username_profile到各自的私有方法中,这样show可以避免操作代码过于冗杂。这将使操作show更易于阅读和理解,并允许代码在控制器的其他部分更轻松地重用。 -
使用
before_action回调函数进行用户身份验证,而不是在多个操作中定义身份验证逻辑。这样可以降低控制器的可读性和易懂性,并避免在多个操作中重复编写相同的代码。
外卖
这无疑证实了我的想法,即这可能是一项有用的练习,并可能导致我们工作方式的重大改变。
盲目地采纳这些建议有用吗?没用。绝对没用(严格来说,它们甚至都不完全正确)——但这确实引入了一种工具,无论如何,它都会成为一种工具。
过分纠结于这类技术目前能做什么或不能做什么是危险的,因为有些不足之处可以通过有针对性的应用来弥补。ChatGPT 作为 GPT-3 的一个应用就是一个很好的例子。ChatGPT的功能虽然不如 GPT-3强大,但它的应用方式却展现了其巨大的潜力。
还有很多探索工作要做。
祝您编程愉快!
文章来源:https://dev.to/ben/i-asked-chatgpt-to-refactor-the-forem-storiescontroller-2hgo