Yes. There is a much better solution.
First off you need a resistor in series with your LED. Connect the resistor from the +5V and then to anode of the LED.
The switch would connect from the cathode of the LED to GND. When pressed the LED will go on.
The Arduino output needs to be operated in a mode where it changes from Input to Output@0 for its switching activity. Connect the output to the cathode of the LED. Under no circumstances should your software ever set the output pin to a '1' high level. You want to avoid the situation where a high output level can get shorted to GND by pressing the switch. To turn the LED on the pin is set low '0' as an output. To turn off the LED the pin is set to input mode.